0

私は、複数のブラウザー ウィンドウを開くマルチスレッドの WTL ベースのアプリケーションに取り組んでいます。それぞれに、ブラウジング用の独自の埋め込み IWebBrowser2 インスタンスがあり、それぞれが個別の UI スレッドにあります。

NewWindow3 に応答して、新しいブラウザ ウィンドウを開き、新しいウィンドウIWebBrowser2->get_Application()を返しますIDispatchPtr

ポップアップが目的のサイトを開いている間、このポップアップが開かれた元のウィンドウのセッションは期限切れになります。元のウィンドウでさらにナビゲーションを行うと、ログイン ページに戻ります。

誰かが私を助けるために重要かもしれないと私が思ったいくつかのポイント -

  1. NewWindow3これは、が空でないbstrUrlContext(元の URL を含む 3 番目のパラメーター)で起動された場合にのみ発生します。
  2. NewWindow3 処理の一部として、以下が行われます -
    • 新しい IWebBrowser2 埋め込みウィンドウの作成Create()、パラメータzWindowNameの値に設定bstrUrlContext
    • 返されたIDispatchポインタは、IWebBrowser2->get_Application()
4

1 に答える 1

0

この問題は解決されました。

空の文字列(_T( ""))WindowNameを使用してIWebBrowser2-埋め込みウィンドウを作成する必要がありました。また、ウィンドウのOnCreate()ハンドラー(WM_CREATEの場合)でCAxWindow :: CreateControl()を呼び出して、IWebBrowser2コントロールを確実に作成する必要がありました。

ありがとう

于 2013-01-24T08:55:19.833 に答える