枚举所有进程

 

 

/*
Takes a snapshot of the specified processes, as well as the heaps, modules, and threads used by these processes.
*/

HANDLE WINAPI CreateToolhelp32Snapshot(
__in DWORD dwFlags,
__in DWORD th32ProcessID
);

/*
Retrieves information about the first process encountered in a system snapshot.
*/

BOOL WINAPI Process32First(
__in HANDLE hSnapshot,
__in_out LPPROCESSENTRY32 lppe
);

/*
Retrieves information about the next process recorded in a system snapshot.
*/

BOOL WINAPI Process32Next(
__in HANDLE hSnapshot,
__out LPPROCESSENTRY32 lppe
);


 

 

 

#include <windows.h>
#include
<tlhelp32.h>
#include
<stdio.h>

int main()
{
PROCESSENTRY32 processEntry
= {0};

HANDLE hProcessSnap
= CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if(hProcessSnap == INVALID_HANDLE_VALUE)
return -1;
processEntry.dwSize
= sizeof(PROCESSENTRY32);
int cnt = 0;
BOOL bRet
= Process32First(hProcessSnap, &processEntry);
while(bRet)
{
++cnt;
printf(
"ProcessID: %d (%s)\n", processEntry.th32ProcessID, processEntry.szExeFile);
bRet
= Process32Next(hProcessSnap, &processEntry);
}
CloseHandle(hProcessSnap);
printf(
"cnt = %d\n", cnt);
}

 

 

 

posted @ 2010-09-03 16:16  penink  阅读(185)  评论(0)    收藏  举报