2011-08-25 136 views
0

我試圖通過Chrome插件從Internet Explorer 8訪問IWebBrowser2對象。我可以在chrome插件沒有安裝的情況下訪問它,但由於類名等不同,它不起作用。用於Internet Explorer的IWebBrowser2和Chrome插件

沒有鉻插件,我可以使用:

function GetIEFromHWND(WHandle: HWND; var IE: IWebbrowser2): HRESULT; 
var 
    hInst: HWND; 
    lRes: Cardinal; 
    MSG: Integer; 
    pDoc: IHTMLDocument2; 
    ObjectFromLresult: TObjectFromLresult; 
begin 
    Result := 0; 
    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; 

這不起作用(我假設),因爲沒有任何的IHTMLDocument2接口(使用MS間諜++中,你可以看到窗口heirarachy是完全不同的)。

我可以訪問我之後的「Tab」實例,但最終我需要用新URL(我將使用IWebBrowser2.Navigate來完成)「刷新」該選項卡。

我已經嘗試導入Chrome的類型庫,但是我找不到任何幫助的任何內容。所以我很樂意利用我需要的任何東西,以刷新我有辦法處理的選項卡。

感謝

回答

2

如果您需要使用Chrome Frame的我已經在這裏包了ActiveX控件: http://www.progdigy.com/?p=116

不過,我會建議你使用Delphi鉻嵌入式相反,你將有更多的可能性。 http://code.google.com/p/delphichromiumembedded/

+0

當然,問題是關於IE瀏覽器託管的瀏覽器,而不是託管在Delphi應用程序中。 –

+0

謝謝,但大衛是正確的。我需要在IE中使用Chrome,而不是在Delphi應用程序/表單中。我查看了嵌入式版本,看它是否有任何代碼可能有幫助,但可惜它沒有。 – Jason

+0

我道歉,我讀得太快了 –