如何得到所有进程的Handle 得到所有进程ID的文章很多,GetCurrentProcess()只能得到当前process的Handle,如何得到所有进程的handle,请朋友们帮帮忙!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 ZwQuerySystemInformation系统的所有Handle都可以获取!但这个API却不是容易用的,需要一点NTDDK的知识http://lysoft.7u7.net http://www.xfocus.net/articles/200406/706.html windows SDK里有一类API叫做 Tool Help你可以试试看 uses Windows, SysUtils, Classes, TLHelp32, StrUtils;type TProcessInfo = class private FHandle: HWND; FName: string; FFileName: string; FDescription: string; public property Name : string read FName; property Handle : HWND read FHandle; property FileName : string read FFileName; property Description : string read FDescription; end;procedure EnumProcess;var p : TProcessInfo; ContinueLoop : BOOL; FSnapshotHandle : THandle; FProcessEntry32 : TProcessEntry32;begin FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); try FProcessEntry32.dwSize := Sizeof(FProcessEntry32); ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32); while integer(ContinueLoop)<>0 do begin p := TProcessInfo.Create; p.FHandle := FProcessEntry32.th32ProcessID; p.FName := FProcessEntry32.szExeFile; ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32); end; finally CloseHandle(FSnapshotHandle); end;end; 大哥,这样也不对啊,我用getCurrentProcess得出来的进程显示出来是一个没有数字0的八位数,而用上面的方法列出来的是三位数或四位数,根本就不一样,帮忙哦 你不试试怎么知道不对呢?用TerminateProcess函数结束进程试试就知道是不是正确的了 [Delphi] 关于数据库语句 在FastReport中怎么实现打印空白主项数据啊(即表样式一定,有数据就填,没有就留空)? 我想做一个SQL-SERVER数据库结构的升级程序,请来点建议 各位大哥我有一个问题请帮忙 关于线程的问题 请问如何在Delphi中调用shell 请教,股票软件的趋势图是怎么做的? C++ to Delphi 如何定义一个数集接口?(ActiveX) 如何用Delphi修改doc文件的摘要属性 关于TTeThemeMenuBar 高分求教:FastReport 3.07 中如何将数据导出到EXCEL文件或TXT文件?
系统的所有Handle都可以获取!但这个API却不是容易用的,需要一点NTDDK的知识http://lysoft.7u7.net
里有一类API叫做 Tool Help
你可以试试看
Windows, SysUtils, Classes, TLHelp32, StrUtils;type
TProcessInfo = class
private
FHandle: HWND;
FName: string;
FFileName: string;
FDescription: string;
public
property Name : string read FName;
property Handle : HWND read FHandle;
property FileName : string read FFileName;
property Description : string read FDescription;
end;procedure EnumProcess;
var
p : TProcessInfo;
ContinueLoop : BOOL;
FSnapshotHandle : THandle;
FProcessEntry32 : TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
FProcessEntry32.dwSize := Sizeof(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
while integer(ContinueLoop)<>0 do
begin
p := TProcessInfo.Create;
p.FHandle := FProcessEntry32.th32ProcessID;
p.FName := FProcessEntry32.szExeFile;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
finally
CloseHandle(FSnapshotHandle);
end;
end;
用TerminateProcess函数结束进程试试就知道是不是正确的了