問題タブ [iwebbrowser2]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
1764 参照

c++ - IWebBrowser2::Navigate2エラー処理

エラーを処理する正しい方法は何ですか?私は次のようなコードを作成し、MSDNで見つけたすべてのエラーコードを処理しましたが、それでも、「不明」というエラーが表示されることがあります。

0 投票する
0 に答える
420 参照

visual-c++ - CAxWindow の応答しないスクリプトの実行を停止する方法 -> IWebBrowser2 -> Navigate

を使用して、ATL exe でブラウザー コントロールをホストしていCAxWindow::CreateControl()ます。IWebBrowser2次に、インターフェイスをクエリして、URL に移動します。に電話した後IWebBrowser2->Navigate、次のことを確認します

  1. IWebBrowser2->get_ReadyState (&result)
  2. IWebBrowser2->get_Busy(&bBusyStatus);

そして、私が呼び出す上記の値に基づいてIWebBrowser2->Stop();

しかし、URL に無限ループがある場合、スクリプトの実行は停止せず、しばらくすると次のメッセージが表示されます。 "Stop running this script? A script on this page is causing your web browser to run slowly....."

このメッセージ ボックスを抑制し、タイムアウトを監視し、独自のカスタム メッセージを表示して、スクリプトの実行を停止したいと考えています。しかし、これを達成する方法がわかりません。これまたは別のアイデアに対する助けがあれば、大歓迎です。

注:IWebBrowser2->Quit()スクリプトを中止しても効果はありません。

私はVC++、ATLを使用しています。

0 投票する
1 に答える
449 参照

session - NewWindow3 処理のために別の埋め込み IWebBrowser2 を開くと、埋め込み IWebBrowser2 でセッションが期限切れになる

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

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

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

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

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

winapi - WebBrowser コントロールを非表示にする

コントロールを表示せずに HTML を画像に変換する Win32 アプリケーションがあります。(Win32 アプリケーションで ActiveX を使用した経験はあまりありません)。

この MSDN の記事に従って、コントロールと呼び出しを作成しましたNavigate(): http://msdn.microsoft.com/en-us/library/aa451946.aspx

画像を変換する必要がある場合は、 を呼び出しますIViewObjec::Draw()。問題は、次の関数を呼び出しても、コントロールが常に表示されることです。

コードに足を踏み入れたとき、私が呼び出すときに

コントロールはすぐに表示されます。しかし、MSDNからわかることは、それがOLEIVERB_INPLACEACTIVATE意味することです

メニューやツールバーなど、エンド ユーザーがオブジェクトの動作や外観を変更する必要があるツールを表示せずに、オブジェクトをその場でアクティブにします。このようなオブジェクトをシングルクリックすると、ユーザー インターフェイス ツールの表示がコンテナーとネゴシエートされます。コンテナが拒否した場合、オブジェクトはアクティブなままですが、ツールは表示されません。

少し混乱しています。隠したいだけです。

0 投票する
0 に答える
550 参照

iwebbrowser2 - ローカル HTML ページの読み込み時に DocumentComplete イベントが発生しない

ローカルの HTML ファイルを IE に読み込み、DocumentComplete イベントを受け取ることを期待しています。発射されることはありません。NavigateComplete と ProgressChange も試しましたが、同様に起動されません。コードは次のとおりです。

Web 上のページを参照している場合、すべてのイベントを受け取ります。では、なぜ彼らはローカルページで解雇されないのでしょうか?

0 投票する
1 に答える
2202 参照

c++ - モーダル HTML ダイアログを表示する IE Web アプリケーションを自動化するには?

[わかりやすくするためにもう一度修正]

Web サイトと対話する C++ プログラムがあります。このサイトは IE 固有のものであり、私のプログラムも同様です。

通常の方法で IE の実行中のインスタンスに接続しています (アウト プロセス-- コードを参照)。を取得したら、個々のオブジェクトを取得して操作し、フィールドに入力してボタンをクリックすることにIWebBrowser2問題はありません。IHTMLDocument2IHTMLElement

しかし、Web ページにwindow.showModalDialogを呼び出す JavaScript が含まれている場合、行き詰まります。他のページと同様に、ポップアップ内の HTML 要素を操作する必要があります。しかし、私はそれを取得できないようですIWebBrowser2

ポップアップのタイトルは常に「Web ページ ダイアログ」でInternet Explorer_TridentDlgFrameInternet Explorer_Server. Internet Explorer_Serverしかし、通常の IE インスタンスの場合のように、ウィンドウから IWebBrowser2 を取得することはできません。

を取得できますが、 を取得IHTMLDocument2Ptrしようとすると が取得されます。IWebBrowser2HRESULTE_NOINTERFACE

コードはかなり標準的なもので、「通常の」IE ウィンドウであれば問題なく動作します。

重要な場合、これはVistaIE8です。(これらの両方が、XP/IE7 で問題なく動作していたコードベースに重大な変更をもたらしたため、これを強調します。)

繰り返しますが、私の目標は、それぞれを取得IHTMLElementして操作することです。自動化しているアプリケーションのソース コードにアクセスできません。

キーストロークをやみくもにInternet Explorer_Serverウィンドウに送信することを検討していますが、そうではありません。

追加するために編集:

誰かが子ウィンドウを取得してメッセージを送信することを提案しましたが、それは動作しないと確信していInternet Explorer_Serverます。Spy++ によると、子ウィンドウはありません。(これは IE 固有のものではありません。Java アプレットにも子ウィンドウはないようです。)

アップデート

コメントの中で、Simon Maurer は、上記のコードがうまく機能したと述べ、タイプミスがないことを確認するために、完全なスタンドアロン アプリをPastebinに非常に寛大に投稿しました。私が彼のコードを使用すると、同じ場所で同じように失敗し、ポップアップではなく、基になるページに接続したいと彼が考えていることに気付きました。そのため、上記のテキストを編集して、そのあいまいさを取り除きました。