判断某程序是否在运行
采用进程检测的方法来检测某程序
//check V3Monitor.exe to be existing or not int CV3ImportFileDlg::V3MonitorExist() { PROCESSENTRY32 pe; int pid = 0; HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0); pe.dwSize = sizeof(PROCESSENTRY32); TCHAR ch[MAX_PATH] = _T("V3Monitor.exe"); if (hSnapshot == INVALID_HANDLE_VALUE) { return -1; } if (!::Process32First(hSnapshot, &pe)) return 0; while (1) { pe.dwSize = sizeof(PROCESSENTRY32); if ((_tcscmp(ch, pe.szExeFile)) == 0) { pid = pe.th32ProcessID; break; } if (::Process32Next(hSnapshot, &pe) == FALSE) break; } CloseHandle(hSnapshot); return pid; } //close V3Monitor.exe void CV3ImportFileDlg:: CloseV3Monitor(int pid) { HANDLE hProcess; DWORD dwPriorityClass; //打开进程句柄 hProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, pid); if (hProcess == NULL) return; dwPriorityClass = GetPriorityClass(hProcess); if (dwPriorityClass == 0) return ; if (!TerminateProcess(hProcess, 1)) return; CloseHandle(hProcess); return; } //open V3Monitor.exe void CV3ImportFileDlg::OpenV3Monitor() { CString V3Monitor = m_strcurrentFilePath + _T("\\") + _T("V3Monitor.exe"); ShellExecute(NULL, _T("open"), V3Monitor, NULL, NULL, SW_SHOWNORMAL); //打开V3Monitor }
V3Monitor.exe为待检测的应用程序。