请问如何获得IE的窗口过程啊?其它窗口可以,但IE无法获得?

解决方案 »

  1.   

    仅供参考网络编程
    让应用程序从IE中获取键入的网址 
     
    转自:www.csdn.net
     
    文章正文  
    前些时候,朋友想做一个小共享软件,软件的主要作用是阻止用户进入某些网站,他的设想是从IE的地址栏中获取键入的网址,如果这个网址非法的话,则不可以进入,代码如下: HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
      if(hwnd)
     {
        HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("Edit"),NULL);
       char sz[255];
      ::SendMessage(hwnd2,WM_GETTEXT,255,(LPARAM)sz);
      AfxMessageBox(sz);
     }结果发现不能得到正确的结果,从SPY上看,类名也全部是正确的,为什么不能得到正确的结果呢?看了他的代码后,我进行了如下改动,就可以得到正确的结果了:HWND hwnd=::FindWindow(_T("IEFrame"),NULL);
     if(hwnd)
     {
      HWND hwnd2=::FindWindowEx(hwnd,NULL,_T("WorkerW"),NULL);
      HWND hwnd3=::FindWindowEx(hwnd2,NULL,_T("ReBarWindow32"),NULL);
      HWND hwnd4=::FindWindowEx(hwnd3,NULL,_T("ComboBoxEx32"),NULL);
      HWND hwnd5=::FindWindowEx(hwnd4,NULL,_T("ComboBox"),NULL);
      HWND hwnd6=::FindWindowEx(hwnd5,NULL,_T("Edit"),NULL);   char sz[255];
      ::SendMessage(hwnd6,WM_GETTEXT,255,(LPARAM)sz);
      AfxMessageBox(sz);
     }
    }  以上的代码不用我解释了吧,这个问题不是什么大问题,难度也不大,但是可能会让初学者不明白为什么得不到程序某一控件的HANDLE,其实对VC来说,没有什么办不到的事情,只是需要你仔细的分析一下而已  
      

  2.   

    谢谢,不过你上面的功能已经实现了,我想问的是如何设置IE的窗口过程,也就是说我想用我的窗口过程替换IE的窗口过程以得到消息(如果用钩子的话我觉得太耗资源了没必要,因为我只关心IE的窗口消息)