已知IE窗口的句柄,如何由此得到IHTMLdocument2接口?

使用GetIEFromHWND,然后:IEWnd.Document   as   IHTMLDocument2得到IHTMLDocument2接口  
   
  p.s.   IE的类名是IEFrame,在IEFrame里面查找类名为“Shell   DocObject   View”的句柄,然后再在该句柄中继续查找“Internet   Explorer_Server”才可以得到IE的那个浏览控件的句柄。然后才能使用GetIEFromHWND   
    
  function   GetIEFromHWND(hWnd:   HWND;   var   IE:   IWebbrowser2):   HRESULT;  
  type  
          TObjectFromLResult   =   function(LRESULT:   lResult;   const   IID:   TIID;   WPARAM:   wParam;   out   pObject):   HRESULT; stdcall;  
  var  
  hInst:   THandle;  
  lRes:   Cardinal;  
  MSG:   Integer;  
  pDoc:   IHTMLDocument2;  
  ObjectFromLresult:   TObjectFromLresult;  
  begin  
          result:=S_OK;  
          if   (hWnd<=0)   then  
                  exit;  
                  hInst   :=   LoadLibrary('Oleacc.dll');  
          if   (hInst>0)   then  
          try  
                  @ObjectFromLresult   :=   GetProcAddress(hInst,   'ObjectFromLresult');  
                  MSG   :=   RegisterWindowMessage('WM_HTML_GETOBJECT');  
                  SendMessageTimeOut(hWnd,   MSG,   0,   0,   SMTO_ABORTIFHUNG,   1000,   lRes);  
                  Result   :=   ObjectFromLresult(lRes,   IID_IHTMLDocument2,   0,   pDoc);  
                  if   Result   =   S_OK   then  
                  begin  
                          (pDoc.parentWindow   as   IServiceprovider).QueryService(IWebbrowserApp,   IWebbrowser2,         IE);  
                  end;  
          finally  
                  FreeLibrary(hInst);  
          end;  
  end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值