2

我目前使用 ie 作为 wxWidgets 上的活动 x com 事物,并且想知道是否有任何简单的方法可以更改始终有效的用户代理。

Atm 我正在更改标题,但这仅在我手动加载链接时才有效(即调用 setUrl)

4

3 回答 3

2

据我所知,唯一“始终有效”的方法是更改​​注册表中的用户代理字符串。当然,这会影响该机器上运行的每个Web 浏览器实例。

您也可以尝试在 上进行 Google 搜索DISPID_AMBIENT_USERAGENT。从这个微软页面

MSHTML 还会DISPID_AMBIENT_USERAGENT 在导航到单击的超链接时请求新的用户代理。此环境属性可以被覆盖,但在以编程方式调用 Navigate 方法时不使用;它也不会导致 DOM 的导航器对象的 userAgent 属性或 clientInformation 行为被更改 - 此属性将始终反映 Internet Explorer 自己的 UserAgent 字符串。

我不熟悉 MSHTML 组件,所以我不确定这是否有用。

我希望这至少能给你一个开始的地方。:-)

于 2008-10-25T00:58:39.780 回答
1

我今天做了一些谷歌搜索,你提供了头部极客的提示,我想出了如何去做。

wxWidgets 使用一个名为 FrameSite 的 activex rapper 类来处理调用请求。我所做的是创建一个继承自此的新类,处理 DISPID_AMBIENT_USERAGENT 事件并传递所有其他事件。因此,现在我可以返回一个不同的用户代理。

谢谢您的帮助。

于 2008-12-16T12:40:22.820 回答
0

Head Geek 已经告诉过您 IE 默认在注册表中的位置。

不过,这只是一个默认设置。如果您实施 [IDocHostUIHandler::GetOptionKeyPath]( http://msdn.microsoft.com/en-us/library/aa753258(VS.85%29.aspx)或 [IDocHostUIHandler2::GetOverrideKeyPath]( http://msdn. microsoft.com/en-us/library/aa753274(VS.85%29.aspx),IE 将使用该注册表项。

您可能需要使用 SysInternal 的 RegMon 来调试它。

于 2008-11-07T11:10:55.110 回答