通过进程id可以知道该窗口的句柄吗,如果该进程是个有窗口的win32位程序?谢谢

解决方案 »

  1.   

    通过某进程的  HANDLE获取其对应主窗体的HWND,如何办?请高手指教。  
    ---------------------------------------------------------------  
     
    EnumWindows(EnumWindowsProcGetWndTitle,0);            //得到所有窗口列表  
     
    void  EnumWindowsProcGetWndTitle(hWnd,lparam)  
    {  
               DWORD  ProcID  =  0;  
               GetWindowThreadProcessId(hWnd,&ProcID);  
               if(ProcID==YourProcID)//如果窗口的processid等于你的ID  
               {  
                           HWND  pWnd  =  GetParent(hWnd);  
                           while(GetParent(pWnd)!=NULL)//得到父窗口的句柄  
                                       pWnd  =  GetParent(pWnd);  
                           //ok    pWnd  就是主窗口了。  
               }  
    }
      

  2.   

    GetWindowThreadProcessId
    EnumWindows枚举 窗口
      

  3.   

    谢谢,听说还有这么一个函数Process * GetProcessById(int val),请问在vc6.0下如何使用这个函数?
      

  4.   

    穷举桌面所有窗体,然后比较processid
      

  5.   

    可以,调用序列:
    OpenProcess // 运用PID打开这个进程,权限设定为PROCESS_QUERY_INFORMATION,得到起进程句柄
    EnumWindow // 枚举,直到找到与之前进程匹配的窗体
      

  6.   

    大侠帮帮忙呀,请问如何在vc6.0下如何使用Process * GetProcessById(int val),这个函数在vc.net中是可以用的,谢谢
      

  7.   

    没这个函数,那是.NET类库里的东西。