問題タブ [ihtmldocument2]

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 に答える
2052 参照

c# - IHTMLDocument2-iframe内のボタンをクリックします

本当に古いアプリケーション用にDCOM拡張機能を作成しています。メインアプリケーションには、内部にIEコントロールがあります。

C#を使用して、次のようにそのIEコントロールのハンドラーを取得できました。

そして、これが私のヘルパーメソッドです:

この部分は正常に機能し、tempからそのhtmlページのコンテンツを取得できました。

名前を付けてiframeにアクセスする必要がありますAAMain
そのiframeドキュメントのコンテンツは次のようになります。

したがって、基本的には、 AAMainという名前のiframe内のフレームセンターにアクセスする必要があります

myDocument-> iframe(AAMain)-> frame(Centre)->そして画像をクリックします

のフレームを反復処理しようとしましたmyDocumentが、無効なキャスト例外が発生します。

このようなコードでさえ:

同じキャスト例外が発生します。

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

c# - ハンドラーから Internet Explorer_Server を更新する

インターネットExplorer_Serverのコンテンツを強制的に更新することはできますか? 私が持っているのは、外部アプリケーションのそのオブジェクトへのハンドラーです(私の同様の質問のように)

MFC でそれを行う方法を示すCodeProjectの素晴らしいチュートリアルを見つけましたが、C# からそれを行いたいと考えています。

私の質問はExplorer_Server、外部アプリケーションでホストされているインターネットを更新する方法です。

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

delphi - 複数のIHTMLElementで構成されるIHTMLElementCollectionobjを取得する方法は?

みんな:オブジェクトパスカルプログラミングで「複数のIHTMLElementsで構成されるIHTMLElementCollection objを取得する方法」について問題が発生しました。以下のコードは、次のとおりです。

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

mfc - CHtmlView で ActiveX コントロールのダウンロードを有効にする

私は Visual C++ プログラミングの CHtmlView の初心者です。IHTMLDocument2 インターフェイスで Web ブラウザー アプリケーションを表示する Web サイトを作成する必要があります。これは、Web サイトから ActiveX コントロールをダウンロードして自動的に実行する必要があります。ここに問題があります。私が作成したアプリケーションは、Web サイトの ActiveX コントロールが実行されていないことを除いて、正常に実行されています。IHTMLDocument2 のインターフェイスを確認し、Dispid 値が DISPID_AMBIENT_DLCONTROL と等しい場合に OnAmbientProperty をオーバーライドしてフラグをゼロに設定しましたが、自分の Web ブラウザー アプリを使用して閲覧している Web サイトに ActiveX コントロールをロードしません。

どのドキュメントを探すべきか誰か教えてもらえますか? ActiveX を有効にするために、自分の Web ブラウザ アプリケーションでセキュリティ レベルを設定する方法について、とても混乱しています。

どうもありがとうございました!

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

winapi - HTMLファイルを含むバッファを使用して、ウィンドウでHTMLコントロールをホストする方法

ビジュアル C++ アプリケーション (x64) を開発しています。実際に私がやろうとしているのは、ウィンドウエクスプローラーにhtmlファイルがあると仮定することです(ファイル拡張子「.html」のファイルを意味します)。それをシングルクリックすると、プレビューペインにプレビューが表示されます(したがって、このファイルを開く必要はありません。ファイルをシングルクリックするだけで、プレビューペインにファイルが表示されます)。

私は同様のタイプのアプリケーションを開発しましたが、私の場合、「htmlファイル」をクリックすると、そのhtmlファイルのコードがプレビューペインに表示されます(そのhtmlファイルをメモ帳で開くと表示されるコード)。これは予期されていませんが、そのhtmlファイルのコードではなく、その「htmlファイル」のプレビューが必要です。

プレビュー ペインの html コードを html ファイルの表示に変換するブラウザ コントロールをホストする必要があると思います (正しい場合は ???) その方法は??

これがそのための私のコードです-

ウィンドウにhtmlコードがある理由は何ですか?? HTMLコードではなく、ウィンドウでHTMLファイルのプレビューを取得するには、コードで何をすればよいですか?? 私を理解する上で疑問がある場合は教えてください??

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

winapi - Visual c++ (x64) アプリケーションを使用してウィンドウに HTML をレンダリングするための ActiveX コントロールをホストする方法

Visual c++ (x64) を使用して、独自の作成ウィンドウで html ファイルをレンダリングしようとしています。私は自分のウィンドウにhtmlファイルを表示するためのメカニズムが必要なだけのことをすべて行いました.htmlファイルの内容をバッファに保存しています(バッファに同じhtmlコードがあるのでそのファイルをメモ帳で開くので、ウィンドウでその html ファイルをレンダリングする方法を取得するだけです)

Google でのランダム検索で、私は ActiveX コントロールをホストする必要があることを認識していましたが、その方法がわかりません。もちろん、インターネット上で利用できるサンプルがいくつかありますが、Visual C++ (x64 MFC アプリケーション) 用ではありません。 .

私が念頭に置いているのは、(1.)次を使用してダイアログを作成することです-

私は正しいですか??

2 つの質問に答えてください (1.) なぜ m_hwndPreview=00000000000 なのですか?? リソース エディターを使用してダイアログ (IDD_HTML_DIALOG) を作成し、activex コントロール (Microsoft Web ブラウザー) を挿入したため、ファイル resource.h (#define IDC_EXPLORER1 1046 を持っています) で確認できるため、正常に実行されます。行われました。g_hInst2 に問題がある可能性があります。私はそれを適切に理解していません。(2.) 目標を達成するための私のアプローチは正しいですか?? _hwndPreview が正常に完了した場合、想定したコードが機能するかどうか?? 私のアプローチは正しいですか??

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

internet-explorer - Webbrowser Control - 「書き込み」を使用してテキストを表示する

IWebBrowser2 インターフェイスを使用して、実行時に作成された HTML 文字列からページをレンダリングしています。この例に示すように、HTML 文字列を取得してレンダリングするメソッド (DisplayHtmlString と呼びましょう) を作成しました。このメソッドは、最初に「about:blank」を指定して Navigate2 を呼び出し、ドキュメントが存在することを確認し、write を呼び出した後に close も呼び出します。

初めて DisplayHtmlString を呼び出すと、ページは常に正しくレンダリングされます。つまり、ブラウザーは、渡した文字列に従って HTML を表示します。問題は、後続の呼び出しが正しく機能しない場合があり、代わりに空白のページが表示されることです。何が原因でしょうか?

空白のページが表示される場合、これは about:blank に移動した結果であることがわかりました。これは、代わりにローカル ファイルに移動することによって決定され、それが表示されます (ただし、その後の書き込み/クローズにより、代わりに HTML 文字列が表示されるはずです)。そのため、Navigate2 の呼び出しは機能しますが、write と close の呼び出しは機能しないことがあります。

考えられる原因として IE 内部のセキュリティ チェック (クロスドメイン チェック?) を考えましたが、私の直感では、これはここで起こっていることではありません。

「DisplayHtmlStringへの次の呼び出しが来る前に、IEはまだレンダリングを終了していません」という行に沿って、ある種の同期の問題である可能性が高いようです。私のコードは元々、ブラウザーの準備完了状態をチェックしていませんでした (この例ではチェックしていないため)。get_readyState への呼び出しで実験的な待機ループを追加し、メソッドから戻る前に状態が「読み込み」を超えていないことを確認しました - おそらくレンダリングが非同期であるためです (?)。また、DisplayHtmlString への連続した呼び出しが正しく機能する場合、プログラムのメイン メッセージ ループが実行されていることにも気付きました (Windows にメッセージを処理する機会を与えます)。これは、DisplayHtmlString への連続した呼び出しが失敗するシナリオには当てはまりません。

したがって、ここで正しい同期を提供する必要があると確信していますが、どうすればよいでしょうか? onreadystatechange という名前のメソッドがあることに気付きましたが、暗闇の中で手探りしながら試した他の多くのことのために、まだ実験していません。それが解決策になる可能性がありますか?それを正しく使用するにはどうすればよいでしょうか? または、代わりに、準備完了状態が「完了」に変わるまで、DisplayHtmlString 内のメッセージ ループを処理しますか?

更新: DisplayHtmlString にメッセージ ループ処理を追加しました。最初の呼び出し (これは動作します) では、準備完了状態は「対話型」になりますが、それ以上ではありません (これは問題ではないようです)。後続の呼び出し (失敗した場合) では、メッセージ ループが処理されても、準備完了状態は "読み込み中" のままです。