DWORD dwProcessID; 
BOOL      CALLBACK      EnumWindowsProc(HWND      hwnd,LPARAM      lParam)  
{
    DWORD Pid = 0; 
DWORD hProcId;
    GetWindowThreadProcessId(      hwnd,      &pid  );  //枚举进程id
if(dwProcessID      ==      pid)   
{
             dwProcessID=pid;
 HWND m_ProcessID=(HWND)dwProcessID;//获得句柄
}
if(m_ProcessID)
{
             GetWindowThreadProcessId(m_ProcessID,&hProcId);  //获取进程ID
 HANDLE gnd = OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProcId);//访问进程 }
if(gnd)
{
...... //开始挂挂的具体代码
}
}void CMy555Dlg::OnButton1() 
{
EnumWindows(      EnumWindowsProc,      (LPARAM)NULL);   
}

解决方案 »

  1.   

    dwProcessID未初始化;
    HWND m_ProcessID和HANDLE gnd在{}内有效;
    最后要关句柄,返回值。
      

  2.   

    呵呵!  用mfc的CWinThread
      

  3.   


    BOOL CALLBACK EnumWindowsProc(HWND hWnd, LPARAM lParam)   
    {
    DWORD dwProcessID = (DWORD)lParam;
    HANDLE hTargetProcess = NULL; //进程的句柄 DWORD dwNewProcId = 0; 
        GetWindowThreadProcessId(hWnd,  &dwNewProcId);  //获取进程ID
        if(dwProcessID == dwNewProcId)
        {
    HANDLE hTargetProcess = OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProcId);//访问进程句柄
    if (hTargetProcess != NULL)
    {
    //开始其他的代码
    //...............
    }
    }
    } void CMy555Dlg::OnButton1()  
    {
    // 这里你首先应该知道目标进程的ID, 这个变量必须通过其他方式初始化
    // 否则你在窗口的枚举函数的判断条件就不成立,也可以不是全局变量
    DWORD dwProcessID = xxx;
    EnumWindows(EnumWindowsProc,  (LPARAM)dwProcessID);

      

  4.   

    if(dwProcessID      ==      pid)    

                 dwProcessID=pid; 
     HWND m_ProcessID=(HWND)dwProcessID;//获得句柄 

    if(m_ProcessID) 

                 GetWindowThreadProcessId(m_ProcessID,&hProcId);  //获取进程ID 
     HANDLE gnd = OpenProcess(PROCESS_ALL_ACCESS,FALSE,hProcId);//访问进程 } 这个能通过编译,m_Process在两个if语句中?