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

delphi - iwebbrowser 2 を使用して Internet Explorer 経由で Gmail にログインする方法

iwebbrowser2 を使用して facebook や gmail などのサイトにログインできますか?

以下のコードでは、変数に入力したユーザー名とパスワードを使用して(ブラウザとしてie8を使用して)gmailにログインできるように、何を追加できますか?

注:私は初心者です。

私の英語でごめんなさい:)

事前に感謝します

0 投票する
3 に答える
4398 参照

delphi - 十分な実パラメータがありませんか?

次のプログラムはerror : e2035 not enough actual parameters、2 つの場所 (39 行目と 45 行目) で戻り、コンパイルされていません。誰かが私を助けてくれますか?ここでパラメータの代わりに 0 または null を入れることはできますか?

0 投票する
5 に答える
8945 参照

c++ - IWebBrowser2:リンクを強制的に新しいウィンドウで開く方法は?

WebBrowserのカスタマイズに関するMSDNのドキュメントでは、新しいウィンドウが開かないようにする方法と、ナビゲーションをキャンセルする方法について説明しています。私の場合、私のアプリケーションはIWebBrowser2をホストしていますが、ユーザーが私のアプリ内の新しいページに移動することを望んでいません。代わりに、すべてのリンクを新しいIEウィンドウで開きたいと思います。望ましい動作は次のとおりです。ユーザーがリンクをクリックすると、そのURLで新しいウィンドウが開きます。

同様の質問がここで行われ、回答されました。投稿に回答した汚染ではなく、新しいディスカッションを開くことが提案されました。

関連する投稿のメンバーは、DISPID_BEFORENAVIGATE2をトラップし、キャンセルフラグを設定し、新しいウィンドウを開くためのコードを記述することでこれを実行できるはずだと提案しましたが、ブラウザーコントロールがBeforeNavigate2イベントを大量に取得することがわかりました。メインページのスクリプトによって開始されます。たとえば、amazon.comは狂ったようにBeforeNavigate2イベントを発生させますが、これらはリンク呼び出しの結果ではありません。

返信ありがとうございます!

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

c++ - IWebBrowser2 OLE コントロールでスクリプトのデバッグを無効にしますか? C++

.Navigate() を使用していくつかの Web ページにアクセスするために使用する IWebBrowser2 があります。ページに js エラーがある場合、「構文エラー」の警告ボックスが表示されたので、.put_Silent(TRUE)を使用しました。そして、代わりに「VS Just-In-Time Debugger: Unhandled exception」という警告が表示されます

コードからすべてのスクリプト エラー警告(JIT デバッガーを含む)を無効にするにはどうすればよいですか(つまり、実際の IE 設定を変更せずに)

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

browser - UI なしで WebBrowser コントロール (ActiveX / IWebBrowser2) を作成するにはどうすればよいですか?

タスクバーにウィンドウを作成せずに WebBrowser コントロールを使用する方法がわかりません。

JAVA/ActiveX/画像などのダウンロードをブロックするなどの高度な機能を使用する必要があるため、IWebBrowser2 ActiveX コントロールを直接使用しています。これは、明らかに WPF または winforms WebBrowser ラッパーでは使用できません (ただし、これらのラッパーには作成する機能があります)。 UI のないコントロール)

コントロールを作成するための私のコードは次のとおりです。

このコードは完全に機能しますが、タスクバーにウィンドウが表示されます。DoVerb(OLEDOVERB.OLEIVERB_INPLACEACTIVATE) 呼び出しを省略すると、Web ページへの移動が正しく機能しません。Navigate() はページ上のすべてをダウンロードするわけではなく、DocumentComplete イベントを発生させません。DoVerb(OLEIVERB_HIDE) を追加すると、DoVerb(OLEDOVERB.OLEIVERB_INPLACEACTIVATE) 呼び出しを省略した場合と同じ動作になります。

これはかなり基本的な質問のようですが、どこにも例が見つかりませんでした。

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

internet-explorer - リンクをクリックして開いた Internet Explorer ウィンドウへの IWebBrowser2 参照を取得するにはどうすればよいですか?

たとえば、HTML リンク内の target="_blank" を含むリンクをクリックして、新しい Internet Explorer ウィンドウを開いたとします。さらに、COM を介してプログラムでこれを行っているとします。DWebBrowserEvents2::NewWindow3 イベントにアタッチすると、新しいウィンドウが開かれるときに通知を受け取ることができることがわかりました。新しく開いたウィンドウへの参照を取得して、それを操作できるようにするにはどうすればよいですか?

注意事項:

  • 特に、NewWindow イベントをキャンセルしてインスタンス化し、ppDisp 引数で新しい空白のブラウザー ウィンドウを返すことはできればしたくありません。
  • 各 IE ウィンドウを (FindWindow などを使用して) 検索し、その場所を尋ね、それを bstrUrl 引数と比較することを考えましたが、ターゲットにリダイレクトがある場合はうまくいかないと思います。
  • これは自動テスト フレームワーク用であるため、ホストされた WebBrowser コントロールではなく、特に Internet Explorer を使用しています。
  • showModalDialog() によって作成されたウィンドウが見つからないことは十分承知しています。
0 投票する
0 に答える
572 参照

internet-explorer - Internet Explorer/IWebbrowserで既存のすべてのHTTPリクエストをキャンセルする

IWebBrowserAPIを使用してInternetExplorerウィンドウを自動化しています。IE / IWebbrowserで未処理のHTTPリクエストをすべてキャンセルする方法はありますか?

私は以下を試しましたが、どれも機能しません。

  1. 呼び出しIWebBrowser::Stop()ます。これはナビゲーションをキャンセルするだけで、既存のダウンロードの続行を停止しません。

  2. ' about:blank'に移動します。これにより、新しいリクエストは作成されなくなりますが、既存のHTTPリクエストは続行されます。

  3. Abort()/Terminate()IInternetProtocolハンドラーを呼び出します。これにより、IEがクラッシュします(当然のことながら)。

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

.net - IWebBrowser2 HTTP 応答ヘッダー

ドラゴスがここで尋ねたのと同じ質問があります

「...こんにちは! Web ブラウザー コントロールをホストするアプリケーションを開発しています。IWebBrowser2 インターフェイスを介してアクセスしています。応答ヘッダーにプログラムでアクセスする方法はありますか...」

ソリューション (2003 年以降) では、パススルーの Asynchronous Pluggable Protocol (APP) ハンドラーを使用しているようです。ここで紹介するソリューションは C++/ATL で書かれているので、これの C# バージョンがあるかどうか疑問に思っていましたか?

私はすでに IWebBrowser2 (および WatiN) から Cookie 値を取得できていることに注意してください。問題は生のヘッダー値を取得することです

0 投票する
3 に答える
2536 参照

c++ - C++ COM 設計。構成と多重継承

アプリケーション (IWebBrowser2) にブラウザー コントロールを埋め込もうとしています。これを機能させるには、IDispatch、IDocHostShowUI、IDocHostUIHandler などを実装する必要があります。私は純粋な C++/Win32 API でこれを行っています。ATL、MFC、またはその他のフレームワークは使用していません。

TWebf と呼ばれるメイン クラスがあります。このクラスは、ブラウザー コントロールを配置するための Win32 ウィンドウを作成し、それを機能させるために必要なすべての OLE 呼び出しを行います。また、Refresh()、Back()、Forward() などのメソッドを使用して、ブラウザ コントロールを制御するためにも使用されます。

現在、これはコンポジションで実装されています。TWebf には、すべての異なるインターフェイス (IDispatch、IDocHostShowUI...) を (スタックに割り当てられた) メンバーとして実装するクラスがあります。TWebf がそのコンストラクターで最初に行うことは、それらのすべてのメンバーにそれ自体へのポインター (dispatch.webf = this;など) を与えることです。QueryInterface、AddRef、および Release は、すべてのインターフェイス実装に対して TWebf のこれらのメソッドへの呼び出しとして実装されます (return webf->QueryInterface(riid, ppv);たとえば、呼び出しによって)。

私は、TWebf とインターフェイスを実装するクラスとの間の循環的な依存関係が好きではありません。TWebf には、TWebf メンバーを持つ TDispatch メンバーがあり、...

そのため、代わりに多重継承でこれを解決することを考えていました。それはまた、QueryInterface を単純化して、常に単に return できるようにしthisます。

私が欲しいものの UMLish スケッチは次のようになります: (クリックして拡大表示)

UML に見られるように、すべてのインターフェイスの最小限の実装を提供したいので、インターフェイスでこれらのメソッドをオーバーライドするだけで済みます。実際に TWebf で何か実質的なことをしたいのです。

「多重継承の実装」は可能ですか? それは良い考えですか?それは最善の解決策ですか?

編集:

今後の議論のために、TWebf での QueryInterface の現在の実装を次に示します。

編集2:

いくつかのインターフェースだけにこれを実装しようとしました。IUnknown と TOleClientSite から TWebf を継承させると問題なく動作するように見えますが、TDispatch を継承リストに追加すると動作しなくなりました。

警告とは別に、warning C4584: 'TWebf' : base-class 'IUnknown' is already a base-class of 'TDispatch'実行時エラーも発生します。実行時エラーは「アクセス違反読み取り場所 0x00000000」です

何らかの理由で IDispatch ではなく、IOleClientSite を扱う行で実行時エラーが発生します。なぜこれが起こっているのか、それが本当に多重継承と関係があるのか​​ どうかはわかりません。手がかりはありますか?

編集3:

実行時例外の原因は、QueryInterface の不適切な実装にあるようです。Mark Ransomが正しく指摘しているように、 this ポインターは *ppv に割り当てる前にキャストする必要があり、IUnknown が要求された場合は特別な注意が必要です。その優れた説明については、多重継承を持つオブジェクトに QueryInterface を実装するときに明示的なアップキャストが必要な理由をお読みください。

なぜ正確に特定のランタイムエラーが発生したのか、まだわかりません。

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

c++ - IWebBrowser によって呼び出される IHttpNegotiate 実装を取得するにはどうすればよいですか?

私はcwebpage_srcコードを使用しており、リンクをクリックしているときにいくつかの HTTP 要求ヘッダーを更新する必要があります。私が理解しているように、IHttpNegotiate->BeginTransaction の自己実装で実行できます。しかし、私の IHttpNegotiate 実装を呼び出す方法は??

ありがとう!