問題タブ [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.
c# - C# プロジェクトの謎のインターフェイスに関する警告
C# ソリューションをビルドするたびに、見たことも書いたこともないインターフェイスに関するいくつかの警告が表示されます。それらのいくつかについてグーグルを試しましたが、ヒットしませんでした。これらは、私が参照しているアセンブリに埋もれている可能性がありますか? もしそうなら、これらの警告を消す方法はありますか?
インターフェイス 'IAlertable' は [デュアル] としてマークされていますが、IDispatch から派生していません。IUnknown 派生インターフェイスとして変換されます。
インターフェイス 'ICustomizationPermissionsReports' は [デュアル] としてマークされていますが、IDispatch から派生していません。IUnknown 派生インターフェイスとして変換されます。
インターフェイス 'IAlertable2' は [デュアル] としてマークされていますが、IDispatch から派生していません。IUnknown 派生インターフェイスとして変換されます。
asp.net - asp.net サイトのパッチ適用アプローチ
私は.net 3.5の新しいプロジェクトに取り組んでいます。
現在、クライアントはストアド プロシージャを使用しており、代わりに LINQ to SQL を使用したいと考えています。彼らがストアド プロシージャを使用する主な理由は、更新が簡単であると信じているためです。特別なアクセス許可を使用していないなど、変更したくないだけで LINQ to SQL 経由でストアド プロシージャを使用することを正当化できます。
LINQ to SQL への変更を簡単に展開できるソリューションを彼らに提示できれば、彼らは考えを変えることにもっとオープンになるかもしれません。
そのため、ビルドプロセス中に作成されるさまざまなアセンブリを更新する方法について、asp.net プロジェクト (mvc ではない) に興味があります。
たとえば、すべての LINQ コードが System.DataAccess プロジェクトにあり、それが運用環境にデプロイされると、製品のバグが LINQ で識別されます。変更された DataAccess プロジェクト (または、prod のデプロイ以降に大幅な変更が加えられたプロジェクト) をデプロイするだけでどれだけ難しいか。
状況に役立つかどうかわからないことの1つは、実際に変更があったかどうかに関係なく、ビルドがあるたびにすべてのプロジェクトでビルド番号が更新されるため、プロジェクトのバージョン番号を見るだけで再デプロイが必要なプロジェクトを決定するのに十分ではありません。
ビルドを変更できるかどうかさえわからないので、変更されたプロジェクトのバージョンだけが更新されますか?
したがって、基本的には、そこにあるさまざまなパッチ適用プロセスと、長所と短所 (つまり、iis のリセットが必要など) に興味があります。
乾杯
c++ - 難解なJScriptホスティングの問題:IDispatch :: InvokeがSCRIPT_E_PROPAGATEを返すときのエラーコードはどこにありますか?
このアプリケーションは、Windows Scripting Host JScriptエンジンをホストし、スクリプトコードから呼び出すことができるいくつかのドメインオブジェクトを公開します。
ドメインオブジェクトの1つは、IDispatch(実際にはIDispatchEx)を実装し、スクリプト関数をコールバックパラメーター(IDispatch *をパラメーター)として受け取るメソッドを持つCOMコンポーネントです。このCOMコンポーネントはスクリプトによって呼び出され、いくつかのことを実行してから、呼び出し元のスクリプトに戻る前に、指定されたIDispatchパラメーターを介してスクリプトにコールバックします。
コールバックスクリプトがたまたま例外をスローした場合(たとえば、S_OK以外のものを返す別のCOMコンポーネントを呼び出す場合)、コールバックスクリプトでIDispatch :: Invokeを呼び出すと、HRESULTではなくSCRIPT_E_PROPAGATEが返されます。他のCOMコンポーネントから。他のCOMオブジェクトから期待されるHRESULTではありません。そのHRESULT(SCRIPT_E_PROPAGATE)を最初のCOMコンポーネントの呼び出し元(たとえば、呼び出し元のスクリプト)に戻すと、スクリプトエンジンは、他のCOMオブジェクトからの予想されるHRESULTでエラーを正しくスローします。
ただし、実際のエラーはどこにも見つかりません。Invoke呼び出しからは返されません(戻り値はSCRIPT_E_PROPAGATEです)。Invokeに提供されたEXCEPINFOを介して返されることはありません(構造は空のままです)。また、GetErrorInfoでは使用できません(呼び出しはS_FALSEを返します)。
私は本当にそのエラーを手に入れたいと思っています。なぜなら、それをキャッシュして、後続の呼び出しで同じエラーを返すことが役立つからです(エラーに到達するには、スクリプト関数によって定義される高価な操作が必要になることがよくあります。パラメータですが、エラーをキャッシュする方法を知っています)。スクリプト化されたCOMコンポーネントが、提供されたスクリプト関数へのコールバック中にスローされた例外を取得する方法はありますか?
c# - C# でパラメーターを使用して IDispatch Invoke をパッケージ化する (DISPPARAMS を使用)
IDispatch をサポートするレガシー COM オブジェクトの遅延バインディングに Invoke を使用しています。.NET の Type.GetMethod Type.InvokeMember がこれらのオブジェクトで機能しないように見えるため、これが必要なようです。
次のコードは、オブジェクトからプロパティを取得する場合に正常に機能します。呼び出し元は、プロパティ名を文字列として渡し、遅延バインディングでプロパティ値を取得します。このクラスは、コンストラクターでオブジェクトを受け取り、オブジェクトへのインターフェイス ポインターとして this.idisp (および this.lcid) を設定します (批評を歓迎します!)。
私は今、同等のセッターを書こうとしています。
ただし、Dispatch パラメータを C# でパッケージ化する方法がわかりません。
つまり、構造を設定する方法:
マネージド オブジェクトからマーシャリングするアンマネージド バリアントを作成する必要があることを理解しています。これを行う方法について何か提案はありますか?
delphi - IDispatch インターフェイスのメンバーへのアクセスを取得する
私は物理学者です。インポートされた ActiveX コントロール (ocx ファイル) を使用して Delphi で作業しようとしています。ライブラリに IGraph、IGraphAxes、IAxis の 3 つのオートメーション インターフェイスがあるとします。ライブラリの構造は次のようになっています。
===IGraph のプロパティ:===
Idispatch* IGraphAxes;
... //他のメンバー
===IGraphAxes のプロパティ:===
Idispatch* XAxis;
Idispatch* YAxis;
Idispatch* ZAxis;
整数の色。
整数スタイル;
… //他のメンバー
===IAxis プロパティ:===
float Min、Max;
ブール値の ShowNumbers;
… //他のメンバー
IGraph から、GetIDsOfNames() および Invoke() 関数を使用して、IGraphAxes (色とスタイル) の単純なメンバーにアクセスできます。しかし、XAxis (または YAxis、Zaxis) にアクセスしようとすると、エラーが発生します。まず、GetIDsOfNames() を使用すると、問題なく XAxis の dispid が返されます。しかし、その dispid で Invoke を呼び出すと、「アドレスでのアクセス違反...」というエラーが発生します。idispatch ポインター (**Xaxis)* は何も指していないようです。どうすればこれを解決できますか?
Idispatch* Xaxis
と
IAxis インターフェイスを相互に接続するにはどうすればよいですか?
PS私の英語でごめんなさい、私はネイティブスピーカーではありません
c++ - 接続ポイントクライアントにIDispatch実装を提供する
単一の単純なCOMオブジェクトを使用して単純なCOMDLLinprocサーバーを作成しました。COMオブジェクトは、接続ポイントを実装します。
IDispEventImpl
から派生し、シンクマップを使用してこのプロセスを簡略化するATLクライアントを作成する方法を知っています。
ただし、デモンストレーションの目的で、単純なCOMオブジェクトを呼び出し、接続ポイントのシンクとして機能するクラスを使用するwin32コンソールアプリケーションを作成したいと思います。
の実装を提供する方法がIDispatch
わかりません-何も見つからないので、誰かがこれに関するドキュメントを推奨できますか(ATL Internalsを持っていますが、これは私が必要とするものをカバーしていないようです)。
これが私がすでに持っているクラスです:
windows - 構造体を IDispatch メソッドに渡す
サードパーティの COM モジュールでは、構造体をメソッドに渡す必要があります。
IDL 定義の重要な部分は次のようになります。
ATL を使用して C++ からメソッドを呼び出すにはどうすればよいですか?
.net - .net を使用して COM オブジェクトにイベント コールバック パラメータを送信する方法
COM dll を参照しています。一部のメソッドは、コールバック パラメータを必要とします。リフレクターで interop.MyComLib.dll を確認しました。
このパラメーターを送信するにはどうすればよいですか? デリゲートを送信できません (コンパイル例外)。送信this
して受信しましInvalidCastException
た。
c++ - IDispatchエラーおよび/またはメッセージテキストのリスト
HRESULTSを返すWMI/WBEMインターフェイスでメソッドを呼び出しています。これらのエラーコードに対して意味のあるエラーメッセージをユーザーに表示したいと思います。ただし、HRESULTのエラーメッセージを検索すると、「IDispatchエラー#3598」のような文字列しか表示されません。
それらの意味を説明するこれらのIDispatchエラーコードのリストを見つけることができましたか?
エラーが発生する可能性のあるサンプルコード:
エラールックアップ:
注:これは役に立ちません-私が取得したHRESULTSは含まれていません。また、winerror.hには含まれていません。