如何得到所有进程的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函数结束进程试试就知道是不是正确的了 无主窗体的托盘程序如何实现? 换个头像试试 函數調用error? 打开EXCEL文件,超简单的问题。 哪里有能用的Delphi5 ADO升级包????? 如何优化SQL语句? 提问:如何取得SQL Server数据库上的某一个表的数据,存放到本地Access库中的某一表中。 如何将字符串声明为类的名字? 谁能告诉我正确1stClass 3000 的序列号和密码? 关于显示白条的解决办法 关于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函数结束进程试试就知道是不是正确的了