VC下寻找某个进程并关闭

来源:互联网 发布:vscode 开发react 编辑:程序博客网 时间:2024/06/13 03:12
bool close_exe(const string& sexe){DWORD processId = FindProcess(sexe.c_str());HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId);if (hTargetProcess == NULL){return false;}if (!TerminateProcess(hTargetProcess, 0)){LPVOID lpMsgBuf;FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&lpMsgBuf, 0, NULL);MessageBox(0,(LPCTSTR)lpMsgBuf, _T("Error"), MB_OK | MB_ICONINFORMATION);LocalFree(lpMsgBuf);}return true;}
OpenProcess的权限要为PROCESS_ALL_ACCESS,否则会出现“拒绝访问”的情况

DWORD FindProcess(const char *strProcessName){DWORD aProcesses[1024], cbNeeded, cbMNeeded;HMODULE hMods[1024];HANDLE hProcess;char szProcessName[MAX_PATH] = { 0 };if (!EnumProcesses(aProcesses, sizeof(aProcesses), &cbNeeded)){return 0;}for (int i = 0; i< (int)(cbNeeded / sizeof(DWORD)); i++){hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, FALSE, aProcesses[i]);EnumProcessModules(hProcess, hMods, sizeof(hMods), &cbMNeeded);GetModuleFileNameExA(hProcess, hMods[0], szProcessName, sizeof(szProcessName));if (strstr(szProcessName, strProcessName)){return(aProcesses[i]);}}return 0;}

0 0
原创粉丝点击