通过枚举获得控制台进程号,结束进程

来源:互联网 发布:中国人娶外国人知乎 编辑:程序博客网 时间:2024/06/05 09:26

我用EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded )

得到所有运行当中的进程的ID

然后逐一检查ProcessName

如果ProcessName是我要找的"pig.exe"

则得到它的句柄hProcess

ID应该没有错

句柄是这样得到

HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |

                                  PROCESS_VM_READ,

                                  FALSE, processID );    

 

 #include <stdio.h>
#include <string.h>
#include <windows.h>
#include "psapi.h"

#pragma comment(lib, "psapi.lib") 

BOOL CALLBACK EnumWindowsProc_1(HWND hwnd,LPARAM lparam) ;
DWORD PID;
int YES=0;
HWND hwndc;
LPTSTR  String={0};

DWORD ProcessToPID(const char *InputProcessName)
{
 DWORD aProcesses[1024], cbNeeded, cProcesses;
 unsigned int i;
 HANDLE hProcess = NULL;
 HMODULE hMod = NULL;
 char szProcessName[MAX_PATH] = "UnknownProcess";
 

 
 // 计算目前有多少进程, aProcesses[]用来存放有效的进程PIDs
 if ( !EnumProcesses( aProcesses, sizeof(aProcesses), &cbNeeded ) )
 {
  return 0;
 }
 
 cProcesses = cbNeeded / sizeof(DWORD);
 // 按有效的PID遍历所有的进程
 for ( i = 0; i < cProcesses; i++ )
 {
  // 打开特定PID的进程
  hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
   PROCESS_VM_READ,
   FALSE, aProcesses[i]);
  // 取得特定PID的进程名
  if ( hProcess )
  {
   if ( EnumProcessModules( hProcess, &hMod, sizeof(hMod), &cbNeeded) )
   {
    GetModuleBaseName( hProcess, hMod,
     szProcessName, sizeof(szProcessName) );
    //将取得的进程名与输入的进程名比较,如相同则返回进程PID
    if(!stricmp(szProcessName, InputProcessName))
    {
     CloseHandle( hProcess );
     return aProcesses[i];
    }
   }
  }//end of if ( hProcess )
 }//end of for
 //没有找到相应的进程名,返回0
 CloseHandle( hProcess );
 return 0;
}

void main()
{
  //const char DESTPROC[19]= "iexplore.exe";
  HANDLE hRemoteProcess = NULL;
  PID = ProcessToPID(DESTPROC);
  printf("%x/n",PID);
  ::EnumWindows(EnumWindowsProc_1,0) ;
  if (YES==1)
  {
  GetWindowTextA(hwndc,String,50);
  printf("%s",String);

  }

}


BOOL CALLBACK EnumWindowsProc_1(HWND hwnd,LPARAM lparam){ 
  DWORD PPID;
  GetWindowThreadProcessId(hwnd,&PPID);
  if(PID == PPID)
  {YES=1;
  hwndc=hwnd;
  }
  return TRUE ;
}

原创粉丝点击