問題タブ [idispatch]
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.
com - インターフェイスを IUnknown から IDispatch に変更する
vtable 経由でのみアクセスできる COM クラスがあります。すでにクライアントに配布されています。IDispatch を導入することで、スクリプト アクセスも許可する予定です。
私のローカル テストでは、クライアント コードは変更されないことが示されていますが、コードの再構築が必要になるのはなぜですか?
c++ - IDispatch を介して COM 関数を公開するサーバーは、ID パラメータを渡さずに関数を呼び出すさまざまなクライアントをどのように区別できますか?
IDispatch Invoke を介して呼び出されるいくつかの COM 関数を公開している Windows サービスがあります。いつでもこれらの関数を呼び出すことができるさまざまなクライアント (Windows アプリケーション) があります。クライアントの変更を必要としない変更を Windows サービスに導入する必要があります (クライアントを変更することはできません)。どのアプリケーションが関数を呼び出しているか (ID など) を区別する必要があります。注: 正確なクライアント アプリケーションを知る必要はありません。現在のセッション内のさまざまなクライアントを区別するだけで十分です。
例: 2 つのクライアント C1 と C2 があるとします。C1 が Windows サービス (WS) で関数 F1 を呼び出すと、WS はそのたびに (現在のセッション中に) クライアント X1 (X1 と言ったことに注意してください。 PID~プロセスID~のようなC1へのID)。したがって、C3 が F2 を呼び出すと、WS はクライアント X2 (X1 とは異なります) が F2 を呼び出したことを認識します。そして、再び C1 が FX を呼び出します (WS によって公開された任意の COM 関数) WS は、クライアント Xn (X2 など) が FX を呼び出したのではなく、X1 が FX を呼び出したことを区別できます。
クライアントからの ID 引数を必要とせずに、この状況を達成するのに役立つものはありますか?
.net - 動的アセンブリの IDispatch からユーザー定義メソッドを取得する
そのため、私が取り組んでいるプログラムは、ユーザーが (CodeDOM をコンパイラとして使用して) テキスト エディターに入力するソース コードから動的な .Net アセンブリを作成します。すべてのユーザー定義メソッドを含むこのアセンブリの IDispatch を取得する必要があります。
たとえば、ユーザーは次のように入力できます。
これにより、参照できるインメモリ アセンブリが作成されます。IDispatch を取得するために使用しているコード:
これにより IDispatch が正常に取得されますが、ユーザー定義のメソッドは含まれていません。代わりに、6 つの既定の IDispatch メソッド (QueryInterface、GetTypeInfo など) のみが含まれています。前の例の「Hello」など、定義済みのメソッドを取得できる必要があります。
このアセンブリからユーザー定義メソッドを含む IDispatch を取得するにはどうすればよいですか?
html - Delphi: クリップボードから EmbeddedWB の IHTMLElement へのドラッグ アンド ドロップをシミュレートする
ユーザー アクションをシミュレートするために使用する TEmbeddedWB を備えた Delphi XE2 アプリケーションがあります。アプリケーションは URL に移動し、関連するフォーム フィールドにデータを入力して、データを送信します。問題は、<input type=file />
アップロードされたファイルを受け入れるフィールドがあることです。
この問題について多くのことを読んだことで、プログラムでこれを行うセキュリティ上の問題があることを理解しましたが、ファイルをクリップボードから「ドラッグ」して所定の位置に「ドロップ」できるという提案をしている人も見つかりました。それ以来、関連ファイル (jpeg 画像) をクリップボード (CCR.Clipboard のおかげ) にロードして、EmbeddedWB にドロップすることに成功しました。ただし、ご存じのとおり、TWebBrowser に画像をドロップすると、表示されている画像が使用されます。
私の問題は、アクセスしている Web ページに、ドロップするファイルを受け入れる特定の DIV 要素があることです。その DIV の座標を IHTMLElement として正常に取得し、(視覚的な確認のために) マウス カーソルを所定の位置に移動しましたが、そこに画像をドロップすると、アップロードする代わりに表示用に開きます。まるで、ドロップ領域がドロップを検出せず、Web ブラウザーだけがドロップを検出するかのようです。
この問題に関するガイダンスは大歓迎です。以下は関連するコードです。
方法:
コーリング コード:
c++ - COM IDispatch-> Invoke がエラー DISP_E_EXCEPTION で失敗する
IDispatch->Invoke 呼び出しを呼び出して IDispatch オブジェクトの名前を取得しようとしていますが、メソッドはエラー DISP_E_EXCEPTION で失敗します。取得しようとしているプロパティは「accName」です。以下は、これを実行しようとするコードです。
c++ - LPDISPATCH ポインター/インターフェイスを取得して、activeX コントロールに渡す方法
Windows 7 64Bit の Visual Studio 2015 で MFC を使用しています。
私のアプリケーションには、activeX コントロールがあり、activeX コントロールとアプリケーションの間で通信する必要があります。
しかし、activeX ではアプリケーションに LPDISPATCH ポインター/インターフェイスを渡す必要があります。
アプリケーションのメソッド (OnExtRequest) の LPDISPATCH ポインター/インターフェイスを取得するにはどうすればよいですか?
これは、activeX によって提供されるメソッドです。
これは私のアプリケーションのコールバック関数です (この関数の LPDISPATCH ポインター/インターフェイスを activeX に渡します)
助けてください、ありがとう!
automation - 情報がありません。.dll のシンボルがロードされていません
C++ でアプリケーションのオブジェクトを使用するために Invoke を適用しましたが、エラーが発生しました。エラー: 情報がありません。GPNSAutomation.dll のシンボルが読み込まれていません。私のコードは次のとおりです: