您好,感谢您阅读我的帖子!   现在小弟,要做一个驱动程序Aproc,通过Aproc可以去控制另外一个进程Bproc的开启,关闭;而且可以通Aproc去改变Bproc的窗口(有多个窗口),即通Aproc改变Bproc的窗口的显示顺序;怎么样才能获得Bproc的主窗口的指针或句柄;

解决方案 »

  1.   

    Findwindowtext()我记得用这个函数可以查找窗口,好象是这个吧,功能就是通过窗口名字查找窗口句柄,只要你把要找的窗口一一列出,用这个查就行了。 CWnd* pMainWnd = AfxGetMainWnd()->GetWindow(GW_HWNDFIRST); 
    //进入循环
    while (pMainWnd) 
    { //该名字用于判断是否是IE浏览器
    CString IEName; 
    //获得该窗口的名字并放入IEName中
    GetClassName(pMainWnd->m_hWnd,IEName.GetBufferSetLength(100),100);
    pMainWnd->GetWindowText(IEName);
    //IE名字是IEFrame,所以判断该名是否于等于它
    if(IEName=="与 索尼 聊天中"){
    //是的话,获得子窗口句柄
    ::SetWindowPos(pMainWnd->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOSIZE|SWP_DEFERERASE);
    // pMainWnd->ShowWindow(SW_SHOWMINIMIZED);
    CWnd* pChildWnd=CWnd::FromHandle(FindWindowEx(pMainWnd->m_hWnd,NULL,"WorkerW",NULL)); 

    if(pChildWnd)
    {
    // 如果子窗口存在,获得它的风格,如果满足条件,就给它发消息关闭它。
    if(!(GetWindowLong(pChildWnd->m_hWnd,GWL_STYLE)&WS_VISIBLE))
    {
    pMainWnd->PostMessage(WM_CLOSE,0,0); 
    }
    }
    }
    //继续获得下一个窗口句柄
    pMainWnd = pMainWnd->GetWindow(GW_HWNDNEXT); 
    }要是不给分,也就算了
      

  2.   

    大哥,我的意思是说获得Bproc主窗口的指针或句柄;
    获得主窗口首先要获得Bproc这个进程的句柄,只有通过它才可以达到目标;因为驱动下面根本不知道可能会有什么窗口,也不知道名字!
      

  3.   

    多谢啦,现在我已经改用另外一种方法
    只是现在知道进程的HANDLE不知道如何获得该进程的ID