根據程序名判斷程序是否執行
阿新 • • 發佈:2018-12-21
問題描述:
給定程序名,判斷該程序是否正在執行。
參考程式碼:
#include <TlHelp32.h>
BOOL IsProcessRunning(LPCTSTR lpProcessName)
{
if (NULL == lpProcessName)
return FALSE;
HANDLE hProcess = NULL;
HANDLE hProcessSnap = NULL;
PROCESSENTRY32 Info = {0};
hProcessSnap = ::CreateToolhelp32Snapshot(TH32CS_SNAPALL,0 );
Info.dwSize = sizeof(PROCESSENTRY32);
if(::Process32First(hProcessSnap,&Info))
{
do
{
CString ss = Info.szExeFile;
DWORD dwVersion = GetVersion();
DWORD dwHigh = dwVersion & 0x80000000;
DWORD dwLow = dwVersion & 0x000000FF ;
if((dwHigh == 0x80000000) && (dwLow == 4))
{
int iFind ;
if (( (iFind = ss.Find(lpProcessName)) != -1 )&&( (iFind = ss.Find(lpProcessName)) > 0 ))
{
if ((iFind + _tcslen(lpProcessName) == ss.GetLength())&&(ss[iFind-1 ] == _T('\\')))
{
CloseHandle(hProcessSnap);
hProcessSnap = INVALID_HANDLE_VALUE;
return TRUE;
}
}
}
else
{
if(!ss.CompareNoCase(lpProcessName))
{
CloseHandle(hProcessSnap);
hProcessSnap = INVALID_HANDLE_VALUE;
return TRUE;
}
}
}while(::Process32Next(hProcessSnap,&Info));
}
if ( hProcessSnap != INVALID_HANDLE_VALUE )
{
::CloseHandle(hProcessSnap);
hProcessSnap = INVALID_HANDLE_VALUE;
}
return FALSE;
}
int _tmain(int argc, _TCHAR* argv[])
{
BOOL bRet = IsProcessRunning(L"kxescore.exe");
return 0;
}