根据进程名判断进程是否运行

ゝ一世哀愁。 2022-06-13 07:24 409阅读 0赞

问题描述:

给定进程名,判断该进程是否正在运行。

参考代码:

  1. #include <TlHelp32.h>
  2. BOOL IsProcessRunning(LPCTSTR lpProcessName)
  3. {
  4. if (NULL == lpProcessName)
  5. return FALSE;
  6. HANDLE hProcess = NULL;
  7. HANDLE hProcessSnap = NULL;
  8. PROCESSENTRY32 Info = {
  9. 0};
  10. hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0);
  11. Info.dwSize = sizeof(PROCESSENTRY32);
  12. if(::Process32First(hProcessSnap,&Info))
  13. {
  14. do
  15. {
  16. CString ss = Info.szExeFile;
  17. DWORD dwVersion = GetVersion();
  18. DWORD dwHigh = dwVersion & 0x80000000;
  19. DWORD dwLow = dwVersion & 0x000000FF;
  20. if((dwHigh == 0x80000000) && (dwLow == 4))
  21. {
  22. int iFind ;
  23. if (( (iFind = ss.Find(lpProcessName)) != -1 )&&( (iFind = ss.Find(lpProcessName)) > 0 ))
  24. {
  25. if ((iFind + _tcslen(lpProcessName) == ss.GetLength())&&(ss[iFind-1] == _T('\\')))
  26. {
  27. CloseHandle(hProcessSnap);
  28. hProcessSnap = INVALID_HANDLE_VALUE;
  29. return TRUE;
  30. }
  31. }
  32. }
  33. else
  34. {
  35. if(!ss.CompareNoCase(lpProcessName))
  36. {
  37. CloseHandle(hProcessSnap);
  38. hProcessSnap = INVALID_HANDLE_VALUE;
  39. return TRUE;
  40. }
  41. }
  42. }while(::Process32Next(hProcessSnap,&Info));
  43. }
  44. if ( hProcessSnap != INVALID_HANDLE_VALUE )
  45. {
  46. ::CloseHandle(hProcessSnap);
  47. hProcessSnap = INVALID_HANDLE_VALUE;
  48. }
  49. return FALSE;
  50. }
  51. int _tmain(int argc, _TCHAR* argv[])
  52. {
  53. BOOL bRet = IsProcessRunning(L"kxescore.exe");
  54. return 0;
  55. }

发表评论

表情:
评论列表 (有 0 条评论,409人围观)

还没有评论,来说两句吧...

相关阅读