2

私は現在、wxWidgets のアクティブな x com として ie を使用しており、常に機能するユーザー エージェントを変更する簡単な方法があるかどうかを知りたがっていました。

Atm ヘッダーを変更していますが、これはリンクを手動でロードした場合にのみ機能します (つまり、setUrl を呼び出します)。

4

3 に答える 3

2

私が見つけた限り、「常に機能する」唯一の方法は、レジストリ内のユーザーエージェント文字列を変更することです。もちろん、これはそのマシンで実行されているすべてのWebブラウザインスタンスに影響します。

でGoogle検索を試すこともできますDISPID_AMBIENT_USERAGENTこのMicrosoftページから:

MSHTMLは、DISPID_AMBIENT_USERAGENT クリックされたハイパーリンクに移動するときに、経由で新しいユーザーエージェントも要求します。このアンビエントプロパティはオーバーライドできますが、プログラムでNavigateメソッドを呼び出す場合は使用されません。また、DOMのナビゲーターオブジェクトのuserAgentプロパティやclientInformationの動作が変更されることもありません。このプロパティは常にInternetExplorer自体のUserAgent文字列を反映します。

私はMSHTMLコンポーネントに精通していないので、それが役立つかどうかはわかりません。

少なくともあなたが始める場所を与えてくれることを願っています。:-)

于 2008-10-25T00:58:39.780 に答える
1

私は今日、あなたがヘッドギークに提供したヒントを使って少しグーグルで調べ、その方法を考え出しました.

wxWidgets は、呼び出し要求を処理する FrameSite と呼ばれる ActiveX ラッパー クラスを使用します。私がしたことは、これから継承し、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 に答える