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

来源:互联网 发布:网络借贷管理暂行办法 编辑:程序博客网 时间:2024/06/05 03:50

使用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;

原创粉丝点击