問題タブ [com-interop]
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.
.net - スケジュールされたジョブとして実行すると、COM Interop を使用する SSIS が失敗する
RightFax の COM API (rfcomapi.dll) で COM Interop (Interop.RFCOMAPILib.dll) を利用する SSIS パッケージがあります。
Interop アセンブリは、SSIS パッケージ内で使用できるように GAC 化されています。
パッケージはローカル マシンで問題なく動作します。ただし、手動で開始した場合は、サーバー上でも問題なく動作します (サーバー上のすべての構成が正しいことを意味します)。
(出典:codinghorror.com)
しかし、スケジュールされたジョブ (手動で実行できたのと同じサーバー上) にパッケージを配置し、ジョブにパッケージを開始させると、次の行で失敗します。
そして次のエラーで
この行は、クラスが COM Interop アセンブリからインスタンス化されようとしているパッケージ全体で初めてです。
何が起こっているのでしょうか?スレッドの問題か何か?
.net - .NET 相互運用にローカル COM DLL の使用を強制する
関連する COM DLL のローカル コピーを相互運用アセンブリに強制的に参照させることはできますか?
シナリオは次のとおりです。
COM DLL (HP Quality Center のオートメーション API である OTAClient.dll) の相互運用である相互運用アセンブリ (Interop.OTAClient.dll) を参照する .NET アプリがあります。私は COM についてあまり詳しくありませんが、相互運用機能アセンブリは、特定のファイルを指すのではなく、レジストリの GUID 参照を介して COM クラスを検索することを理解しています。
私が抱えている問題は、レジストリ キーが指す OTAClient.dll のコピーが、ブラウザにログインしたばかりの QC のバージョンに応じて異なるバージョンによって上書きされ、これらの DLL の異なるバージョンは互換性がないことです。お互い。.NET アプリは特定のバージョンの QC にのみ接続するため、COM DLL をこのように変更することはできません。
この行動は本当にイライラするので、どんな提案でも大歓迎です。COM 相互運用の問題に関する他の質問を見てきましたが、それらはすべて、実際の COM DLL を含むこの特定のシナリオではなく、相互運用 DLL のローカル バージョンを GAC の代わりに強制的に使用することに関するものであるようです。
c# - Office Interop APIにインターフェイス/クラス(IFoo、FooClass)パターンがあるのはなぜですか。
Microsoft.Office.Interop.Visioライブラリでは、各エンティティ(Shapeなど)は、クラス(ShapeClass)およびインターフェイスShapeとして記述されています。
したがって、要素ごとに次のようになります。
なぜこのように設計されているのですか?
c# - .Net の COM exe 内でクラスを使用する
内部に COM クラスを含む .exe ファイルがあります。これらは .netComVisible
タイプではなく、C++ のものです。
これらのクラスを .net プロジェクト内で使用したいのですが、exe への参照を追加できません。私がしようとすると、私は得ます
tlbimp も失敗します。
しかし、利用可能な COM クラスがあるかのように見えます。私のHKEY_CLASSES_ROOT
ハイブでは、さまざまな COM クラスのエントリを確認できます。
.net プロジェクト内からこれらの COM クラスを使用する方法について、またその場合でも、手がかりを得た人はいますか?
c# - vb6/vbaアプリによって呼び出されるvs 2008 c# express dllをデバッグするには?
データ ソースからデータを取得して vba/powerpoint ppa アプリケーションに渡すためのラッパーとして機能するように記述された ac# dll があります。私はvbaの経験があまりないので、vb6を使用してこれをシミュレートしていますが、これについては少し詳しく知っています。
私は現在、構文を理解しようとして十分な問題を抱えており、com と ccw の複雑な仕組みについては理解していません。そのため、関数がデータを返さない理由をデバッグする方法を探しています。可能であれば、vb6 アプリが呼び出しているときに .net dll の行ごとのウォークスルーを用意しています。
最初は、外部ファイルに書き出す.net dll内に関数を入れることを考えましたが、それは機能していないようで、理由がわかりません。
グーグルで調べたところ、私の場合に役立つプロセスへのアタッチがあることがわかりましたが、その機能はvs studio フルバージョンでのみ使用できます。
だから私は、vb6/vbaアプリと.net dllの間で何が起こっているのかを適切にデバッグできる他のツール、メソッドがあることを願っています。
ありがとう。
c# - DIctionary<> を COM 相互運用に公開する方法
これらの行に沿って何かを定義したインターフェイスがあります。
このインターフェイスを実装する具象クラスは、COM Interop に登録する必要があります。すべてがコンパイルされ、アセンブリは正常に登録されているように見えますが、(PowerShell などから) COM オブジェクトを作成しようとするとエラーが発生します。
これは、私が使用している一般的な Dictionary<> クラスに関連しているようです。だからここに質問があります:
- COM Interop を介してジェネリック コレクションを公開することは可能ですか?
- はいの場合、それはどのように行われますか?
- いいえの場合、回避策は何ですか?
c# - C#でCodeElementsをIntPtrにマーシャリングする
Visual Studioアドインを作成していますが、管理対象のCodeElementsオブジェクトを管理されていない形式にマーシャリングする必要があります。ポインタをキャストして、アンマネージ側のCodeElementのように扱うことができるので、メモリ内にポインタが必要です。
私はXMLの扱い方を知っており、C#でこれの作業バージョンを持っています。再帰の最低レベルでさまざまなメンバー変数をすべて呼び出すと、プログラムの速度が低下するため、アンマネージDLLを作成しました。System.Runtime.Interop.Marshalを使用して、CodeElementsオブジェクトをメモリ内のCOMオブジェクトへのポインターに変換する方法を知る必要があります。
ありがとう。
c# - サードパーティ API - C# を使用してイベントが完了したかどうかを判断する方法は?
私は現在、API から呼び出したイベントがいつ完了したかを検出する必要があるサード パーティの ActiveX コントロールを使用しています。
VS 2008 オブジェクト ブラウザーで ActiveX コントロールを表示すると、呼び出しpublic virtual bool MyMethod()
て、イベントがありpublic virtual event IActiveXObject_MyMethodEventHandler SettleComplete
ます。
_IActiveXObjectEvents_MyMethodCompleteEventHandler()
アセンブリの一部であるデリゲートもあります
ActiveX コントロールからのイベントが完了したことを検出するようにアプリケーションを構成するコードをどのように記述すればよいですか?