枚举所有运行的程序或进程。
解决方案 »
- fastreport同一张报表打印 n 页问题
- 新人求助,成功马上结贴,求最简单打擂台不重复PK算法。
- 用sendmessage发送什么消息能使某个窗口在最前面,即当前活动窗口 ,急急 谢谢了
- 一个小问题
- 自动下载问题
- 各位高手能否提供一些关于用Delphi 6/7 开发B/S程式的资料(有例子最好)
- 求,实数转整数如何求
- 请问方法:procedure logined(baliasname:olevariant;var ayhbh:olevariant)在type library里的设置步骤,谢谢!
- 求助:如何将StringGrid的最左列画成宽为30,而其它列为defaultcolwidth???
- 关于listview的问题
- 关于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;