从HWnd得到IWebbrowser2接口

原创 2006年05月26日 11:25:00

IWebBrowser2* GetIEFromHWnd(HWND hIEWindow)
{ HWND hWnd ;
 if(hIEWindow==NULL){
   hWnd= FindWindow("IEFrame", NULL);
            if(hWnd==NULL)
   hWnd= FindWindow("CabinetWClass", NULL);
     if( hWnd == NULL){
      MessageBox (NULL,"No Running instance of Internet Explorer!","message", MB_OK);
     }
     // walk Shell DocObject View->Internet Explorer_Server
     HWND hWndChild = FindWindowEx(hWnd, 0, "Shell DocObject View", NULL);
     if(hWndChild !=0){
      hWndChild = FindWindowEx(hWndChild, 0, "Internet Explorer_Server", NULL);
  }
  hWnd=hWndChild;
 }
 else{
  hWnd=hIEWindow;
 }
 // 我们需要显示地装载OLEACC.DLL,这样我们才知道有没有安装MSAA
 HINSTANCE hInst = LoadLibrary( _T("OLEACC.DLL") );
 IWebBrowser2* pWebBrowser2=NULL;
 if ( hInst != NULL ){
  if ( hWnd != NULL ){
  
   LRESULT lRes;
   UINT nMsg = ::RegisterWindowMessage( _T("WM_HTML_GETOBJECT") );
   ::SendMessageTimeout( hWnd, nMsg, 0L, 0L, SMTO_ABORTIFHUNG, 1000, (DWORD*)&lRes );

   LPFNOBJECTFROMLRESULT pfObjectFromLresult = (LPFNOBJECTFROMLRESULT)::GetProcAddress( hInst, _T("ObjectFromLresult") );
   if ( pfObjectFromLresult != NULL ){
    HRESULT hr;
    CComPtr<IHTMLDocument2>spDoc;
   
    hr=pfObjectFromLresult(lRes,IID_IHTMLDocument2,0,(void**)&spDoc);
    if ( SUCCEEDED(hr) ){
    
     CComPtr<IHTMLWindow2>spWnd2;
     CComPtr<IServiceProvider>spServiceProv;
     hr=spDoc->get_parentWindow ((IHTMLWindow2**)&spWnd2);
     if(SUCCEEDED(hr)){
     
     hr=spWnd2->QueryInterface (IID_IServiceProvider,(void**)&spServiceProv);
      if(SUCCEEDED(hr)){
       hr = spServiceProv->QueryService(SID_SWebBrowserApp,
                                         IID_IWebBrowser2,
                                         (void**)&pWebBrowser2);

      
      }
     }
    }

    }
   }
  
  ::FreeLibrary(hInst);
 }
 else{//如果没有安装MSAA
  MessageBox(NULL,_T("Please Install Microsoft Active Accessibility"),"Error",MB_OK);
 }
 return pWebBrowser2;
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

利用IWebBrowser2接口的Navigate2方法实现Http POST传输

开发中的社区游戏,要求将原来的mini浏览器扩展成可以通过Http POST传输来打开网页,比如:通过提交用户id,password,用户的action(查看profile,查看日记,打开blog等等...

从一个窗口句柄获取IWebBrowser2和IHTMLDocument2接口

从一个窗口句柄获取IWebBrowser2和IHTMLDocument2接口更新日期:2010-1-10测试环境:VC6.0+WinXP━━━━━━━━━━━━━━━━━━━━━━━━将以下代码张贴到...

从一个窗口句柄获取IWebBrowser2和IHTMLDocument2接口

本文提供了2个接口。 测试例子:调用之前请确保打开IE浏览器,运行程序,点击第一按钮,可以改变网页背景色,点击第二个按钮可以让网页转到百度首页 已将源代码上传:免积分下载地址 ...

利用IWebBrowser2接口的Navigate2方法实现Http POST传输

利用IWebBrowser2接口的Navigate2方法实现Http POST传输     飘飘白云2007/11/8   开发中的社区游戏,要求将原来的mini浏览器扩展成可以通过Http P...

通过IE句柄 获得 IE Document对象和IWebBrowser2对象

http://blog.csdn.net/stxyc/article/details/5411360 http://hi.baidu.com/lxxgfc/blog/item/9070103dc7f...

IWebBrowser2控件去除边框

  • 2014-10-13 23:45
  • 34KB
  • 下载

iwebbrowser2 learner

  • 2010-01-04 14:04
  • 220KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)