我现在是用创建子进程的方法,新建一个别的程序,我用PROCESS_INFORMATION 能得到这个进程的,线程ID,进程ID,以及两个HANDLE,
可是现在我要得到这个进程的CWnd * 指针,请问要如果得到!
更具体的说,我是想得到那个程序的HWND!
可是现在我只有两个ID,和两个HANDLE,请问有没有办法能得到那个程序CWND*.还有,我不想使用遍历的方式,就是遍历桌面上所有的窗口,或遍历所有的进程,然后比较这个窗口的进程ID,或线程ID,是否与我已经有的ID相同!
因为这种方法不保险,进程和窗口都可以有别的手段隐藏的!我想问的是,有没有什么办法可以根据手头上的这个资源,能得到那个程序的CWnd指针的!
谢谢!

解决方案 »

  1.   

    HANDLE就是HWND
    HWND一般是用来定义窗口句柄的  
    HANDLE   是用来定义任何类型的句柄,(Handle   to   an   object).包括HWND。  
    可以理解为HWND是HANDLE的一个特例,用来表示一个窗口
      

  2.   

    因为一个进程或者线程可以创建多个窗口,所以从线程ID获取窗口句柄是不现实的。但是一个窗口只能属于一个线程,所以只有遍历窗口,然后用GetWindowThreadProcessId()获取创建窗口的线程ID或者进程ID,来和你的程序比较。至于说隐藏,这个进程难道不是你自己创建的吗?
      

  3.   

    现在我要得到这个进程的CWnd * 指针,请问要如果得到! 
    我认为得不到这个指针. 不同的进程有各自的内存空间.
      

  4.   

    如果只知道进程ID,可以用EnumWindows枚举窗口,然后GetWindowThreadProcessId获取窗口的进程ID类对比;如果知道线程ID,可以用EnumThreadWindows。