function EnumProcesses(lpidProcess,cb,cbNeeded:dword):integer;stdcall;external 'PSAPI.DLL';
function EnumProcessModules(hProcess:THandle;lphModule:HMODULE;cb,lpcbNeeded:Dword):integer;stdcall;external 'PSAPI.DLL';
function GetModuleFileNameExA(hProcess:THandle;hModule:HMODULE;lpFilename:pchar;nSize:DWord):integer;stdcall;external 'PSAPI.DLL';
procedure TForm1.ShowProcess;
var
ProcessStruct:ProcessEntry32;
ProcessHandle,HProcess:THandle;
Pb:Boolean;
FileName:array[0..1024] of char;
hMods:array [0..1024] of DWORD;
cbNeeded,cMod:DWORD;
SHFileInfo:TSHFILEINFO;
Icon:TIcon;
begin
ListView1.Clear;
ImageList1.Clear;
ProcessHandle:=CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS,0);
ProcessStruct.dwSize:=SizeOf(ProcessStruct);
Pb:=Process32First(ProcessHandle,ProcessStruct);
while Pb do
begin
ListView1.Items.Add;
ListView1.Items[ListView1.Items.Count-1].Caption:=ExtractFileName(ProcessStruct.szExeFile);
ListView1.Items[ListView1.Items.Count-1].SubItems.Add(inttostr(ProcessStruct.th32ProcessID));
HProcess:=OpenProcess(PROCESS_ALL_ACCESS,false,ProcessStruct.th32ProcessID);
ListView1.Items[ListView1.Items.Count-1].SubItems.Add(inttostr(HProcess));
if EnumProcessModules(hProcess,dword(@hMods),sizeof(hMods),dword(@cbNeeded))<>0 then
begin
GetModuleFileNameExA(hProcess,cMod,FileName,sizeof(FileName));
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ShowProcess;
end;
procedure TForm1.EndProcess1Click(Sender: TObject);
var
hKill:integer;
begin
if ListView1.Selected <> nil then
begin
hKill:=OpenProcess(PROCESS_TERMINATE,False,strtoint(ListView1.Selected.SubItems.Strings[0]));
TerminateProcess(hKill,0);
CloseHandle(hKill);
ShowProcess;
end;
end;