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

 1.根据进程名称判断程序运行状态

2.获取进程序名称的完全路径

BOOL CAutoUpdater::ProgramIsRun(CString strProgram, CString& strProgramPath) { HANDLE handle=CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); PROCESSENTRY32 pce; pce.dwSize = sizeof(PROCESSENTRY32); DWORD dwPID; if( Process32First(handle, &pce) ) { if( GetLastError() == ERROR_NO_MORE_FILES ) { return FALSE; } else { dwPID = pce.th32ProcessID; if( _tcscmp(pce.szExeFile, strProgram) == 0 ) { return TRUE; }//( _tcscmp(pce->szExeFile, strProgram) == 0 ) //遍历进程 while( Process32Next(handle,&pce) != FALSE ) { dwPID = pce.th32ProcessID; if( strProgram.CompareNoCase(pce.szExeFile) == 0 ) { //获取运行程序的完全路径 char szModuleFile[MAX_PATH] = ""; HMODULE hModule = GetModuleHandle(strProgram); HANDLE hProcess = OpenProcess(PROCESS_VM_READ|PROCESS_QUERY_INFORMATION, FALSE, dwPID); GetModuleFileNameEx(hProcess, hModule, szModuleFile, MAX_PATH); strProgramPath = szModuleFile; CloseHandle(hProcess); return TRUE; } }//while(Process32Next(handle,pce) != FALSE) } } CloseHandle(handle); return FALSE; }

调用GetModuleFileNameEx()需要添加psapi.h和psapi.lib。

下载地址:可以看一下我的资源里有。

 

你可能感兴趣的:(根据进程名称判断程序是否运行)