問題タブ [shdocvw]

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

c# - Windows のアクティブな IE インスタンスの起動ポイントを見つける

Windowsでサービスとして実行されるアプリケーションがあります。このサービスは、SHDocVw.ShellWindows() を使用してアクティブな Internet Explorer インスタンスを定期的にチェックします。これにより、各 IE インスタンスで URL を取得できます。

私の質問: これらの IE インスタンスのそれぞれで Web ページがどのように起動されたかを調べることは可能ですか? 例えば ​​-

  • ユーザーは IE で URL を入力して Web ページをロードしましたか?
  • ユーザーは別の IE タブからリンクを選択して起動しましたか?
  • ユーザーは、Outlook などの別のデスクトップ アプリケーションから IE インスタンスを起動しましたか?

ありがとうございました。

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

c# - C# で SHDocVw を介して Internet Explorer インスタンスを取得できない

このコードを使用した WPF C# アプリがあります。

繰り返しの時点で、Internet Explorer ウィンドウを 2 つ開いています。それらの最初のものはJSでもう一方を開きました。

背後にあるシナリオは、IE ユーザーの最初のインスタンスで製品から選択し、[注文の作成] ボタンを押すことです。このボタンを押すと、IE の 2 番目のインスタンスが開き、書式設定された注文が印刷できるようになります (自動的に [印刷] ダイアログも開きます)。

上記のコードでは、最初の IE インスタンスのみが表示され、他のインスタンスは表示されません。繰り返しの前にいくつかのIEウィンドウを手動で開くと、shellWindowsでもそれらを見ることができます。

2 番目に開かれた IE のインスタンスが shellWindows に存在しない理由はありますか? IE の 2 番目のインスタンスに接続する他の方法はありますか?

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

c# - ShellWindows にイベント ハンドラーを追加するときの HRESULT 0x80040202

統計目的で IE が使用された回数を単純に監視する、一連のリモート コンピューターでバックグラウンドで実行されるサービスを構築しようとしています。私のコードのほとんどは記述されており、リモート コンピューターと同じ仕様の開発用コンピューターで問題なく動作します。また、すべてのリモート コンピュータに Net Framework 4.5.1 がインストールされていることも確認しました。

サービスを開始すると、このエラー メッセージが表示されます (ログに記録します)。

このエラーの原因となるコードは次のとおりです。サービスが program.cs によって作成されたときに発生します。program.cs を変更していません。

私は一日中グーグルで検索しましたが、誰もこの問題を抱えていないようで、リモートコンピューターでのみ発生します。これらのコンピューターの構成に、この問題の原因となるものはありますか? shdocvw ライブラリに問題はありますか?

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

vb.net - 複数のスレッドで mshtml.HTMLDocument.frames にアクセスするにはどうすればよいですか?

したがって、既存の IE ブラウザをキャプチャして HTMLDocument を変数に保存するメイン スレッドがあります。このドキュメントの「onload」イベントにイベント ハンドラを追加しました。これは、その中にあるフレームが必要だからです。メイン スレッドでフレームをキャプチャすると、すべて問題ありませんが、イベントが発生すると、ドキュメントにアクセスすると例外が発生します。

メイン スレッドを呼び出してみました。メイン ドキュメントが完全にロードされていることを確認しようとしましたが、何も機能していないようです。「指定されたキャストは無効です」というメッセージが常に表示されます。

MyHTMLDocument.framesを Visual Studio の [ウォッチ] ウィンドウに配置しても、同じ例外「指定されたキャストは無効です。」が発生します。いくつかのウェブサイトは<STAThread()> _、私が試してみたものを使用することを提案しましたが、役に立ちませんでした. 私も試しTryCast(MyHTMLDocument.frames, FramesCollection)ました。

ドキュメントが更新されたときに、フレームのドキュメントを特定の名前で再キャプチャするだけです。スレッドの問題だと思いますが、呼び出しも機能しません...面白いことに、Title、GetElementsByNameなどの他のものにアクセスできます。ただのフレームではありません...

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

delphi - 更新された TWebBrowser は、最初から IDocUIHandler を実装するようになりました。カスタム実装を使い続けるにはどうすればよいですか?

Delphi 10.0 Seattle から、Embarcadero はTWebBrowserコントロールの実装を変更しました。

プレシアトル:TWebBrowser = class(TOleControl)

シアトル+:TWebBrowser = class(TOleControl, IDocHostUIHandler, IDocHostShowUI, IOleCommandTarget)

TWebBrowserインターフェイスの独自の実装を提供した場所のクライアント サイト/ホストとして登録できるクラスを実装した場所で、やや古いコードを実行していIDocHostUIHandlerます。

aTWebBrowserは現在、これらを最初から実装している (そしてそれらを非公開にしている) ため、私が知っている限りでは派生するのが難しいため、新しいTWebBrowserコンポーネントを再登録して の実装を見つけるにはどうすればよいIDocHostUIHandlerですか?

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

ms-word - COMException: 呼び出されたオブジェクトがクライアントから切断されました

オブジェクトから抽出された一連のテキストを照合して Word ドキュメントを作成する C# で記述されたプログラムがあります。このアプリケーションは過去 4 年間、さまざまなマシンで正常に動作していましたが、現在、1 つの新しいクライアントで次のエラーが発生して機能しなくなりました。

System.Runtime.InteropServices.COMException (0x80010108): 呼び出されたオブジェクトがクライアントから切断されました。(HRESULT からの例外: 0x80010108 (RPC_E_DISCONNECTED)) System.Windows.Forms.Control.OnClick( EventArgs e) で System.Windows.Forms.Button.OnClick(EventArgs e) で System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent) で System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons ボタン, Int32 クリック) System.Windows.Forms.Control.WndProc(Message& m) で System.Windows.Forms.ButtonBase.WndProc(Message& m) で System.Windows.Forms.Button.WndProc(Message& m) で System.Windows.Forms. Control.ControlNativeWindow.OnMessage(メッセージ&

コード スニペットは次のとおりです (これは単なる抜粋であるため、そのままではコンパイルされませんが、意味があるはずです)。

MSDN フォーラムで、これは SHDocVw.dll というライブラリが見つからないことが原因である可能性があることを読みました。上記のライブラリを含めてアプリケーションを再パッケージ化しましたが、結果は同じです。Service Pack の問題である可能性があると言う人もいますが、推奨される解決策はありません。別の人が「80010108」エラーを無視することを推奨しましたが、そのアイデアは OP によってすぐに却下されました。これは、特定の相互運用クラスのインスタンス化/参照が正しくないことが原因である可能性があることもここで読みましたが、私のコードでそれが起こっていることはわかりません (または、表示されていませんか?)