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的类型库,但是我找不到任何帮助的任何内容。所以我很乐意利用我需要的任何东西,以刷新我有办法处理的选项卡。
感谢
当然,问题是关于IE浏览器托管的浏览器,而不是托管在Delphi应用程序中。 –
谢谢,但大卫是正确的。我需要在IE中使用Chrome,而不是在Delphi应用程序/表单中。我查看了嵌入式版本,看它是否有任何代码可能有帮助,但可惜它没有。 – Jason
我道歉,我读得太快了 –