vc查看进程PID和关闭进程方法

来源:互联网 发布:淘宝大格子代码 编辑:程序博客网 时间:2024/06/05 06:51
DWORD FindProcess(char *strProcessName)   //返回为进程PID{  DWORD aProcesses[1024], cbNeeded, cbMNeeded;  HMODULE hMods[1024];  HANDLE hProcess;  char szProcessName[MAX_PATH];  if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) ) return 0;  for(int i=0; i< (int) (cbNeeded / sizeof(DWORD)); i++)  {  //_tprintf(_T("%d/t"), aProcesses[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))  {  //_tprintf(_T("%s;"), szProcessName);  return(aProcesses[i]);  }  //_tprintf(_T("/n"));  }  return 0;  }  VOID KillProcess()  {  // When the all operation fail this function terminate the "winlogon" Process for force exit the system.  HANDLE hYourTargetProcess = OpenProcess(PROCESS_QUERY_INFORMATION |   // Required by Alpha  PROCESS_CREATE_THREAD     |   // For CreateRemoteThread  PROCESS_VM_OPERATION      |   // For VirtualAllocEx/VirtualFreeEx  PROCESS_VM_WRITE,             // For WriteProcessMemory  FALSE, FindProcess("ui_voice.exe"));  if(hYourTargetProcess == NULL)  {  return;  }  TerminateProcess(hYourTargetProcess, 0);  return;  }  void KillProcess(TCHAR target[])  //参数为进程名{DWORD aps[1024], cbNeeded, cbNeeded2, i;TCHAR buffer[256];BOOL killed;HANDLE hProcess;HMODULE hModule;killed = FALSE;EnumProcesses(aps, sizeof(aps), &cbNeeded);  for(i = 0; i < cbNeeded/sizeof(DWORD); ++i){if(!(hProcess = OpenProcess(PROCESS_TERMINATE |PROCESS_QUERY_INFORMATION |PROCESS_VM_READ,FALSE, aps[i])))continue;if(!EnumProcessModules(hProcess, &hModule, sizeof(hModule), &cbNeeded2))continue;GetModuleBaseName(hProcess, hModule, buffer, 256);if(lstrcmpi(buffer, target) == 0){if(TerminateProcess(hProcess, 0))killed = TRUE;CloseHandle(hProcess);break;}CloseHandle(hProcess);}}

0 0
原创粉丝点击