問題タブ [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 投票する
1 に答える
226 参照

websocket - websocket は IWebBrowser2::Navigate で動作しませんか?

私は小さなhtml websocketアプリケーションを書いています。この HTML ページは IE ウィンドウでは問題なく動作しますが、IWebBrowser2::Navigate を使用して同じページを開こうとすると、標準の Java スクリプト エラー メッセージ ボックスに「WebSocket が定義されていません」というエラーがスローされます。以下はサンプルの JavaScript コードです。

ナビゲートメソッド内にwebsocketが実装されているかどうか教えてください。

よろしく、 アナンド・チョウベイ

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

mfc - Web リンクが WebBrowser に読み込まれ、リンクが IE でスムーズに表示されている間にスクリプト エラーがスローされる

CWebBrowser が埋め込まれた MFC アプリケーションがあります。

現在、私は問題に遭遇しました:

私のブラウザはいくつかの Web ページの読み込みに失敗し (オブジェクトの欠如、JS 関連のエラー)、同じ Web ページが IE(10) に正常に読み込まれている間、常にスクリプト エラーがスローされます。

また、Firefox で読み込もうとしましたが、問題ありません。ページ自体が原因ではないのではないかと思いますが……。

私が知っているように、WebBrowser には IE と同じ解析エンジンがあります。しかし、なぜ異なる振る舞いをするのでしょうか?

私を助けてください 。前もって感謝します 。

私のOS:Win7 x64 + IE10。

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

mfc - WebBrowser(VC)を使用したデータの投稿に失敗しました

CWebBrowser が埋め込まれた MFC アプリケーションがあります。指定した web に移動するときにデータを投稿したい。インターネットに関するいくつかの調査で、Navigate メソッドの 1 つの引数がそれを渡すことを目的としていることがわかりました。しかし、何度か試してみて、いつも失敗します。投稿データは、navigate メソッドが呼び出された後、データ トラフィックで運ばれません (はい。データをキャプチャして確認します)。before2Navigate カルバックの post パラメータも確認しましたが、空です..

これが私のスニペットです。

私を助けてください 。どうもありがとう。

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

proxy - IWebBrowser2->Navigate でプロキシ サーバーを使用する方法

IWebBrowser2 を取得し、それを使用して URL に移動するコード (VC++) があります。プロキシサーバー経由にしたい。投稿されたいくつかのソリューションを試しましたが、どれもうまくいかないようです。

私が得た最も近いものはMSDNコードを使用していましたが、実際にはInternet Explorerの設定が変更されたため、変更がシステム全体に及んだため、これは私のニーズには実用的ではありません.

理想的には、プロキシ設定を IWebBrowser2 インスタンスごとに設定したいので、コードに 2 つの IWebBrowser2 オブジェクトを含めることができます。1 つはプロキシを使用し、もう 1 つはプロキシを使用しません。それが不可能な場合は、プロセスごとに実行できます。

誰かがこれを機能させ、いくつかのコードを投稿できれば、私は非常に感謝しています。

よろしくお願いします。

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

c++ - (IE BHO) BeforeNavigate2 イベントから IWebBrowser2 を取得

IE BHO に取り組んでいます。BeforeNavigate2 イベントで、IWebBrowser2 へのポインターを取得するにはどうすればよいですか? ここに私のコードがあります:

param[0] のタイプは VT_DISPATCH ではありません:

MSDN (BeforeNavigate2)によると、最初のパラメーターは

ウィンドウまたはフレームを表す WebBrowser オブジェクトの IDispatch インターフェイスへのポインター。このインターフェイスは、IWebBrowser2 インターフェイスに対してクエリを実行できます。

私のコードの何が問題になっていますか?

前もって感謝します。

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

c++ - BeforeNavigate2 イベントでフォームを列挙する

私は IE BHO を書いています。イベント コールバックでフォームを列挙する方法を知りたいです。これは、BeforeNavigate2 イベントでフォームを列挙するコードですが、長さは常に 0 です。

常に 0 を出力するのはなぜですか?

ありがとう。

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

internet-explorer - IWebBrowser2 Ctrl + C およびその他のショートカットのサポート

私は些細な問題を抱えていないようです。

自分のウィンドウを IE メイン ウィンドウにフックします。私のウィンドウは WTL の CWindowImpl から派生し、一部のコンテンツを表示する IWebBrowers2 コントロールをホストします。

IWebBrowser2 は<input type='text'/>、テキストの編集と操作に必要なすべてのキーのサポートが必要な編集ボックス付きの html を示しています (Ctrl + C、Ctrl + V、Ctrl + X など... + Esc、Delete、上下の矢印)。

また、Ctrl + P、Ctrl + S などのショートカットを禁止する必要があります。これは、必要のない Web ページに固有のダイアログを呼び出すためです。


よくある問題のようで、IWebBrowser2 オブジェクトに対して TranslateAccelerator を呼び出す必要があります。

ウェブ上で同様の質問がいくつかあります – Tab キーは IWebbrowser2 では機能しません

解決策 –ホットキーが機能しない!!

IWebBrowser2 コントロールでの Tab キーのサポート

これは非常に興味深いスレッドです。私が必要とするのはすべてです –ホストされたWebブラウザーコントロールでのControl-Cの処理


そのため、まず IWebBrowser2 オブジェクトに対して TranslateAccelerator を呼び出す必要があります。しかし、最初にキーボードからメッセージを取得する必要があります。

それで、それがどのように見えるか見てみましょう。

ここに画像の説明を入力

フックされたウィンドウがキーボード入力メッセージを受け取りません。クラス「Internet Explorer_Server」を持つウィンドウは、それらすべてを受け取ります (実際には、IWebBrowser2 内の IE の hwnd です)。

したがって、この hwnd のウィンドウ プロシージャをフックする必要があります。

フックされた wnd proc 内で、次のことを行います。

はい!いくつかのことがうまくいきました!Esc、Delete、上下の矢印キーが機能するようになりました。

すべてではありません。ショートカットに問題があります。

  1. Ctrl + C、Ctrl + A は機能しません。

Ctrl + X、Ctrl + V - 作業を行います。

これは、クラス "Internet Explorer_Server" を持つ hwnd の Spy++ のメッセージのログです。

Ctrl + CI では、WM_COMMAND を受け取りません。

ここに画像の説明を入力

Ctrl + X:

ここに画像の説明を入力

理由はわかりません。

2. 「悪い」ショートカットは機能します。印刷ダイアログは Ctrl + P で呼び出され、Web ページの保存ダイアログは Ctrl + S などで呼び出されます。この場合、何もできません。フックされたウィンドウ プロシージャで何を返しても、それらはまだ表示されています。そのため、ウィンドウに送信する前にそれらを処理する必要があります。


解決?

この問題に関するすべての解決策には、次のようなものがあります。

  1. PreTranslateMessage
  2. 実際に翻訳アクセラレータ

この瞬間まで、フックされたメッセージ プロシージャには TranslateAccelerator しかありません。

事前翻訳はそのようなことをしなければなりません:

また、PreTranslateMessage では、「不適切な」ショートカットをフィルター処理して、ウィンドウに送信しないようにすることができます。

別の男性も PretranslateMessage を使用することを提案しています (上記のスレッドからのダイアログ):

– CMessageFilter からウィンドウを派生させ、CMessageLoop::AddMessageFilter でインストールし、例に示すように PreTranslateMessage を実装します。

– 私は今、サンプルが示唆することをしたと思います. しかし問題は、私の「親」ウィンドウがキーストロークを取得しないことです。キーストロークはすべて IE AX コントロールに送られます。

– そのため、CMessageFilter が必要です。メッセージが宛先ウィンドウにディスパッチされる前に、メッセージ ポンプにフックされます。

わかりましたが、IWebBrowser2 をホストするルート ウィンドウはキーボード メッセージを受け取りません。また、ウィンドウに PreTranslateMessage はありません。ウィンドウ proc 呼び出しのみです (親 CWindowImpl による)。

上記のように、CMessageFilter から派生させて PreTranslateMessage を実装できますが、メイン ウィンドウを作成せず、その CMessageLoop にアクセスできないため、CMessageLoop::AddMessageFilter でイベントをサブスクライブできません。


では、このすべてを機能させるために今何をすべきでしょうか? PreTranslateMessage を使用する必要がありますか?