在窗體 ListView (vsReport 模式) 中顯示所有進程的 PID、父進程 ID 及可執行文件名。
#include
#include
void __fastcall TMainForm::Button1Click(TObject *Sender) {
HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (snapshot == NULL) return;
PROCESSENTRY32 processinfo;
processinfo.dwSize = sizeof(processinfo);
bool status = Process32First(snapshot, &processinfo);
while (status) {
TListItem *li = ListView1->Items->Add();
char buffer[32];
sprintf(buffer, "%08X", processinfo.th32ProcessID);
li->Caption = buffer;
sprintf(buffer, "%08X", processinfo.th32ParentProcessID);
li->SubItems->Add(buffer);
li->SubItems->Add(processinfo.szExeFile);
status = Process32Next(snapshot, &processinfo);
}
CloseHandle(snapshot);
}
TH32CS_SNAPPROCESS 獲取進程列表快照。PROCESSENTRY32.dwSize 必須先設置,否則 API 失敗。Process32First/Next 遍歷快照,szExeFile 直接提供文件名(無路徑)。