枚举所有运行的程序或进程。
解决方案 »
- 关于代码编写规范的几个疑问??????请大虾们进来看看!
- 如何安装fastreport3.15三方控件啊?(没分了,还是进来看看吧~~)
- datEtimepicker学了的都忘了.
- 设置断点调试时,鼠标放在变量上却看不到变量的值了?为什么?
- 句柄获取后的问题?请教各位大侠赐教100分>郁闷中
- 如何访问窗体内所有控件?
- 看到书上说:路由器是在网络中转发报文的机器。请问报文是什么东东?
- 请教,发送函数SendBuffer和接收的OnDataReceive可以同时执行不?
- 新手必看,在线求助DELPHI
- delphi程序如何打包生成setup.exe程序,望赐教,谢谢!
- 关于adoquery1.append;........adoquery1.post;的问题-------------在线等待!!
- 散分——帮朋友帖子添人气:D
Snap : THandle;
PPro : PProcessEntry32;
begin
Snap := CreateToolHelp32Snapshot(TH32CS_SNAPPROCESS,0);
New(PPro);
PPro^.dwSize := SizeOf(TProcessEntry32);
if Process32First(Snap,PPro^) then begin
Repeat
New(aPP);
with ListView1.Items.Add do begin
Caption := PPro^.szExeFile;
SubItems.Add(Format('%.8x',[PPro^.th32ProcessID]));
SubItems.Add(Inttostr(PPro^.cntThreads));
SubItems.Add(Format('%.8x',[PPro^.th32ParentProcessID]));
SubItems.Add(Format('%.8x',[PPro^.pcPriClassBase]));
end;
until NOT Process32Next(Snap,PPro^)
end;
Dispose(PPro);
end;
创建快照函数CreateToolhelp32Snapshot
function CreateToolhelp32Snapshot(
dwFlags:DWORD, // 要得到进程的信息,赋为TH32CS_SNAPPROCESS
// 要得到线程的信息,赋为TH32CS_SNAPTHREAD
// 要得到指定进程的堆列表,赋为TH32CS_SNAPHEAPLIST
// 要得到指定进程的模块列表,赋为TH32CS_SNAPMODULE
th32ProcessID: DWORD // 当我们把dwFlags赋为TH32CS_SNAPMODULE 或者
// TH32CS_SNAPHEAPLIST时,需要指定具体的进程ID,否则
// 将忽略此参数。把它赋为0表示当前进程(也就是自己)
): THandle; // 返回值THandle将在以后要枚举进程、线程等对象时使用tagPROCESSENTRY32 = packed record
dwSize: DWORD; // 指定结构的大小,
// 在调用Process32First前需要设置,否则将会失败
cntUsage: DWORD; // 引用计数
th32ProcessID: DWORD; // 进程号
th32DefaultHeapID: DWORD; // 进程的堆号,只对Toolhelp函数有意义,并不是一个有效句柄
th32ModuleID: DWORD; // 进程的模块号,只对Toolhelp函数有意义,并不是一个有效句柄
cntThreads: DWORD; // 进程中包括的线程数
th32ParentProcessID: DWORD; // 进程的母进程
pcPriClassBase: Longint; // 进程的线程的基优先级,所有此进程创建的线程将基于此优先级
dwFlags: DWORD; // 保留,没有使用
szExeFile: array[0..MAX_PATH - 1] of Char; // 进程所对应的文件及路径
end;
TProcessEntry32 = tagPROCESSENTRY32;function Process32First(
hSnapshot: THandle; // 前面由CreateToolhelp32Snapshot创建的快照句柄
var lppe: TProcessEntry32 //函数输出进程信息
): BOOL; //调用成功将为True,否则为False
function Process32Next(hSnapshot: THandle; var lppe: TProcessEntry32): BOOL;