2012-08-07 59 views
2

我的mshtml托管在我的C++应用程序中。我试图为IOmNavigator查询IHTMLDocument,但没有收到任何信息。我也试图用IHTMLWindow2做同样的事情,但没有运气。如何访问IOmNavigator C++界面

我试图访问IOmNavigator以获取浏览器版本号。任何帮助将不胜感激。

感谢

上述
+0

你可能需要QueryService()的东西,但我不知道要求什么或什么SID。 – 2012-08-07 23:15:18

+0

做一些挖掘interwebs它看起来像人们声称IHTMLWindow2有一个get_navigator()方法。尽管这在MSDN上没有列出,所以我不确定这些文档是错误的还是这些人正在破解。 – 2012-08-08 16:32:43

+0

@i_am_jorf https://msdn.microsoft.com/en-us/library/aa741467.aspx您可以在'' – manuell 2016-04-12 08:25:49

回答

2
IHTMLDocument2 *pDoc; IHTMLWindow2 *ihw; IOmNavigator *nvg; BSTR uastr; AnsiString mouni; 
if (SUCCEEDED(CppWebBrowser1->Document->QueryInterface(IID_IHTMLDocument2,(void**)&pDoc))) 
{ 
    pDoc->get_parentWindow(&ihw); ihw->get_navigator(&nvg); nvg->get_userAgent(&uastr); 
    mouni=AnsiString(uastr).UpperCase(); nvg->Release(); ihw->Release(); pDoc->Release(); 
    if (mouni.Pos("TRIDENT")>0 && mouni.Pos("MSIE")==0) { lmrg=8; tmrg=8;} 
} 

代码剪断(BCB5)显示了如何获得的IHTMLDocument2接口,那么IHTMLWindow2接口,那么IOmNavigator接口,然后用户代理字符串,并相应地设置一些利润率(IE11是不同的IE10和以前版本的方式呈现页面)。 HTH,图形。