好吧,好事情作到底!
uses
TLHelp32,PsApi;
……
var
ok : Integer;
ModName : array [0..MAX_PATH] of Char;
ProcessListHandle: THandle;//进程列表的句柄
ProcessStruct : TProcessEntry32;//进程的结构,进程的信息都在这个结构里面
begin
ProcessListHandle:=CreateToolhelp32Snapshot(TH32CS_SNAPProcess,0);
//首先给出进程结构的大小
ProcessStruct.dwSize:=Sizeof(ProcessStruct);
//得到第一个进程
ok:=Process32First(ProcessListHandle,ProcessStruct);
while integer(ok)<>0 do
begin
if GetModuleFileNameEx(OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ, False,
ProcessStruct.th32ProcessID),0,@ModName[0],SizeOf(ModName))>0 then
Result:=ModName;
……
ok:=Process32Next(ProcessListHandle,ProcessStruct);
end;
//在98,2000,xp,nt下都能运行