自己写的一个DELPHI 控制台程序
2013-05-20 08:27
323 查看
代码如下:
// 经过整理的DELPHI控制台程序,体积小,功能不少。呵呵 --XIAO 2013.5 program Console; {$APPTYPE CONSOLE} uses Windows,SysUtils,TLHelp32; {$R *.RES} function GetWinDir: string; var Buf: array[0..MAX_PATH] of char; begin GetSystemDirectory(Buf, MAX_PATH); Result := Buf; if Result[Length(Result)] <> '\' then Result := Result + '\'; end; //取本机的计算机名 function ComputerName: string; var FStr: PChar; FSize: Cardinal; begin FSize := 255; GetMem(FStr, FSize); GetComputerName(FStr, FSize); Result := FStr; FreeMem(FStr); end; //取Windows登录用户名 function WinUserName: string; var FStr: PChar; FSize: Cardinal; begin FSize := 255; GetMem(FStr, FSize); GetUserName(FStr, FSize); Result := FStr; FreeMem(FStr); end; //获取系统所有驱动器 procedure UpdateDrivers; var i: Char; d: String; begin d := ' '; for i:='A' to 'Z' do //从A盘到Z盘检测 begin if (GetDriveType(Pchar(i+':\')) = 3) or (GetDriveType(Pchar(i+':\')) = 2) then //3是固定驱动器 2是U盘 d:= d + i + ': '; end; Writeln(d); end; //获取系统所有进程 procedure UpdateProcess; //USES TLHELP32 var jubing : hwnd;//句柄 fprocessentry32 : TProcessEntry32; //结构类型的变量 zhenjia : Boolean; //返回一个布尔值(用来判断是否找到进程信息) processid : dword; //储存找到的进程ID mingcheng,ss : string; //储存找到的进程名称 i : Integer; begin i := 0; ss := ''; jubing := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); //获得进程快照句柄 fprocessentry32.dwSize := sizeof(fprocessentry32); //给TProcessEntry32结构的第一个参数赋值(也可以理解为把这个结构的第一个参数初始化) zhenjia := Process32First(jubing,fprocessentry32); //使用 Process32First函数取得第一个进程的信息 while zhenjia = true do //如果 Process32First函数执行成功也就是说找到进程列表里的第一个进程时开始循环 begin zhenjia := Process32Next(jubing,FprocessEntry32); //取得第下一个进程信息 mingcheng := fprocessentry32.szExeFile; //取得一个进程的名称 ProcessID := FProcessEntry32.th32ProcessID; ss :=Format(' %-2s',[IntToStr(i+1)])+'.'+Format(' %-20s',[mingcheng])+' PID:'+Format(' %-6s',[IntToStr(ProcessID)]); if i mod 2 = 0 then Write(ss) else Writeln(ss); inc(i); end; end; //通过API函数获得版本信息 procedure SysVersion; var osinfo:OSVERSIONINFO; begin osinfo.dwOSVersionInfoSize:=sizeof(OSVERSIONINFO); GetVersionEx(osinfo); if osinfo.dwPlatformId =2 then Writeln('Windows, 版本 ' +IntToStr(osinfo.dwMajorVersion)+'.'+IntToStr(osinfo.dwMinorVersion) +' (内部版本号 '+IntToStr(osinfo.dwBuildNumber)+': '+osinfo.szCSDVersion+')'); end; //通过API函数获得内存信息 procedure SysMemory; var ms: TMemoryStatus; begin GlobalMemoryStatus(ms); Writeln(Format(' Windows 的物理内存:%s',[FormatFloat('#,###" KB',ms.dwTotalPhys/1024)])); Writeln(Format(' Windows 的可用内存:%s',[FormatFloat('#,###" KB',ms.dwAvailPhys/1024)]) +Format(', 系统资源使用率:%d%%',[ms.dwMemoryLoad])); end; //------------begin------------------------- begin Writeln(''); Writeln('----- 这是一个带图标和版本信息的 Delphi 控制台程序 ------'); Writeln(' 如果不要图标和版本信息,则可以让文件更小巧'); Writeln(''); Writeln('1. 当前时间是 : ' + FormatDateTime('yyyy-mm-dd hh:mm:ss',Now)); Writeln('2. 本程序文件名 : ' + ExpandFileName(ParamStr(0))); Writeln('3. 系统目录是 : ' + GetWinDir); Writeln('4. 本机计算机名是 : ' + ComputerName); Writeln('5. 本机登录用户名是: ' + WinUserName); Write('6. 当前系统有以下驱动器(硬盘和U盘):'); UpdateDrivers; //所有驱动器 Writeln('7. 当前系统有以下进程:'); UpdateProcess; //所有进程 Writeln(''); Write('8. 当前操作系统为:'); SysVersion; //操作系统信息 Writeln('9. 当前系统内存信息为:'); SysMemory; Writeln('--------------------------------------------'); Writeln(' 当前时间是: ' + FormatDateTime('yyyy-mm-dd hh:mm:ss',Now)); Writeln(''); Writeln('---- Powered by Delphi 7 ----- xiao@Redcock 2013.5 ----'); Writeln(''); Write('按回车键退出(Press Enter to Exit)...'); Readln; end.
相关文章推荐
- 给自己的程序添加一个控制台
- c# 控制台程序调用直接运行一个新程序和隐藏自己的窗体(转)
- 10_9_5为Ch10CardLib库编写一个控制台客户程序,从扰乱的Deck对象中一次取出5张牌.如果这5张牌都是相同的花色,客户程序就应在屏幕上显示这5张牌,以及文本"Flush",否则就显示50
- 如何重启一个控制台程序
- php 如何写一个自己项目的安装程序
- 将多个C#控制台程序整合到一个控制台程序中运行
- Delphi 操作一个桌面泡泡程序
- 自己编写的一个小程序——求一个数组中和为定值的组合
- 自己写的一个客户端下载文件程序
- 为你的程序创建一个控制台
- 自己用delphi7参考网上资料写的一个在线升级程序
- 用PHP程序为自己网站打造一个搜索引擎
- 建立控制台程序--获得已经打开的一个窗口的句柄--给这个窗口发送一个关闭命令
- 一个控制台程序中的日志产生程序(运用多线程)
- 一个设置任意窗口透明度的命令行Delphi程序
- ROS学习笔记(一):自己动手写一个ROS程序
- php 如何写一个自己项目的安装程序
- 自己写的一个彩票生成号码程序
- 在开发iOS程序时,有时候需要将时间格式调整成自己希望的格式,这个时候我们可以用NSDateFormatter类来处理。 例如: //实例化一个NSDateFormatter对象 NSDateFor
- VC2012+QT新建一个控制台程序