2009-05-18 13 views
0

おはようございます!新しいポップアップIEウィンドウから発生したイベントをキャプチャする方法

状況:

私のActiveX DLLは、カスタマイズされたウェブブラウザが含まれています。 WebブラウザはWebページを表示します。ユーザーが表示されたページ内のリンクをクリックすると、新しいIEウィンドウがポップアップし、クリックされたリンクURLに移動します。

質問:

どのように私はNEWから発射DocumenCompleteとNavigateCompleteイベントがIEのウィンドウをポップアップキャプチャすることができますか?

私はすでに試した:

私は *のNewWindow2(IDispatchを** ppDisp、 VARIANT_BOOL キャンセル)を取得しようとした イベントは、カスタマイズされたウェブブラウザ(ない新しいIEウィンドウ)から発射し、得られました新しいIEウィンドウを指すポインタppDisp。このポインタをイベントソースとして使用して、イベントキャプチャのイベントハンドラ(IDispatch :: Invoke)にアドバイスまたは接続しようとしました。しかし、それは動作しません。おそらく、新しいIEウィンドウのドキュメントがまだ読み込まれていないためです。私はわかりません。

私は何をすべきですか?

ありがとうございます!

答えて

1

ppDispで新しいWebブラウザを入手することはできません。イベントを作成してイベントをシンクし、ppDispのアプリケーションプロパティをイベントに返します。

+0

あなたはppDispから新しいWebブラウザーポインタを取得し、新しいものを作るの違いについて詳しく説明していただけますか? MSDNによると、ppDispは新しいWebBrowserオブジェクトのIDispatchインターフェイスポインタを受け取るポインタです。 – bionicoder

+0

私が言ったように、あなたはppDispから新しいWebブラウザを入手しません。新しいWebブラウザコントロールを作成し、イベントをシンクしてアプリケーションプロパティを取得します。アプリケーションプロパティの戻り値をppDispに入れます。 –

1
void CYourDlg::OnNewWindow2(LPDISPATCH FAR* ppDisp, BOOL FAR* Cancel) 
{ 
    CDlgNewWB* dlgNewWB = new CYourDlg; 
    this.listDialogWeb.Add(dlgNewWB); 
    dlgNewWB ->Create(IDD_WBDLG_DIALOG); 

    dlgNewWB ->m_webBrowser.SetRegisterAsBrowser(TRUE); 

    *ppDisp = dlgNewWB ->m_webBrowser.GetApplication(); 

}

関連する問題