在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
通过进程快照枚举所有进程,关于进程快照,在Delphi5开发人员指南中有说明,当然也可以百度一下用法。 使用进程快照CreateToolhelp32Snapshot,必须uses TlHelp32单元。 从快照中得到的进程ID,可以获得进程的很多信息,这里不多说,网上有很多资料,具体需要什么可以百度查一下。 以这里记录一下,方便以后查找 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComCtrls; type TForm1 = class(TForm) Memo1: TMemo; Btn1: TButton; procedure Btn1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} uses TlHelp32; // tagPROCESSENTRY32 = packed record // dwSize: DWORD; // cntUsage: DWORD; // th32ProcessID: DWORD; // 进程ID // th32DefaultHeapID: DWORD; // th32ModuleID: DWORD; // associated exe // cntThreads: DWORD; // th32ParentProcessID: DWORD; // this process's parent process // pcPriClassBase: Longint; // Base priority of process's threads // dwFlags: DWORD; // szExeFile: array[0..MAX_PATH - 1] of Char;// Path // end; // TProcessEntry32 = tagPROCESSENTRY32; procedure TForm1.Btn1Click(Sender: TObject); var hSnap: THandle; vPE: TProcessEntry32; sTmp: AnsiString; begin Memo1.Lines.Clear; hSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); vPE.dwSize := SizeOf(TProcessEntry32); if Process32First(hSnap, vPE) then // Process32First找到的肯定是 [System Process] 不管 begin //如果 Process32First 函数执行成功 后使用 Process32Next 读取每个进程的信息 while Process32Next(hSnap, vPE) do begin sTmp := PAnsiChar(@vPE.szExeFile[0]); Memo1.Lines.Add(sTmp); end; end; CloseHandle(hSnap); end; end. 效果图如下: by lin 2016-11-13 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论