| 
   
    | ...get the IWebbrowser2 Interface from a Window Handle? |   
    | Autor: 
      Kamil |  | [ Print tip 
] |  |  |  
 
 
usesActiveX, Shdocvw_tlb, MSHTML_TLB;
 
 type
 TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; wParam: wParam;
 out pObject): HRESULT;
 stdcall;
 
 function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT;
 var
 hInst: HWND;
 lRes: Cardinal;
 Msg: Integer;
 pDoc: IHTMLDocument2;
 ObjectFromLresult: TObjectFromLresult;
 begin
 hInst := LoadLibrary('Oleacc.dll'); @ObjectFromLresult :=
 GetProcAddress(hInst, 'ObjectFromLresult');
 if @ObjectFromLresult <> nil then
 begin
 try
 Msg := RegisterWindowMessage('WM_HTML_GETOBJECT');
 SendMessageTimeOut(WHandle, Msg, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
 Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, pDoc);
 if Result = S_OK then
 (pDoc.parentWindow as IServiceprovider).QueryService(IWebbrowserApp,
 IWebbrowser2, IE);
 finally
 FreeLibrary(hInst);
 end;
 end;
 end;
 
 
 
   |