相关函数名:
1.为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]
HANDLE WINAPI CreateToolhelp32Snapshot ( __in DWORD dwFlags, __in DWORD th32ProcessID );
2.进程获取函数,当我们利用函数CreateToolhelp32Snapshot()获得当前运行进程的快照后,我们可以利用process32First函数来
获得第一个进程的句柄.其原型为(用的是vfp)
查找指定进程的函数:BOOL WINAPI Process32First( __in HANDLE hSnapshot, __inout LPPROCESSENTRY32 lppe );
int GetProcessCount(const TCHAR* szExeName) { TCHAR sztarget[MAX_PATH]; lstrcpy(sztarget, szExeName); CharLowerBuff(sztarget, MAX_PATH); BOOL terminate = FALSE; HANDLE handlePro = NULL; PROCESSENTRY32 my; HANDLE l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); if (((int)l) != -1) { my.dwSize = sizeof(my); if (Process32First(l, &my)) { do { CharLowerBuff(my.szExeFile, MAX_PATH); if (lstrcmp(sztarget, my.szExeFile) == 0) { count++; } }while (Process32Next(l, &my)); } CloseToolhelp32Snapshot(l); } return count; }
找到后count++,找不到返回。
值得指出的是,在wince下需要用 CloseToolhelp32Snapshot()去关闭句柄,而不是CloseHandle(),否则会产生内存泄露。
其他地方可以使用CloseHandle()关闭句柄.