問題タブ [com]

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

.net - .NET ジェネリック クラスを使用して COM インターフェイスを実装することは可能ですか?

COM で表示できるようにしようとしている次のインターフェイスがあります。タイプ ライブラリを生成しようとすると、実装クラスがジェネリック クラスから派生するという事実が気に入りません。

ジェネリック クラスを COM 実装クラスとして使用することはできますか? (非ジェネリック ラッパーを作成して COM にエクスポートできることはわかっていますが、これにより、なくしたい別のレイヤーが追加されます。)

エラーメッセージ:

0 投票する
5 に答える
13458 参照

java - Java から COM API を呼び出すことはできますか?

Java から COM API (具体的には HP/Mercury Quality Center OTA API) を呼び出すことはできますか? もしそうなら、最善の方法は何ですか?

JACOBのようなものは適切ですか?

コードフラグメントは基本に役立ちます:-)

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

c++ - ツールバーから Internet Explorer の現在のページのアドレスを取得する

COM を使用して Internet Explorer 用の MFC でツールバー (鉄筋のツール バンド) を作成することに頭を悩ませています。

現在表示されているページのアドレス (つまり、私の場合はhttps://stackoverflow.com/questions/ask :-) ) をツールバーから取得することは可能ですか?

もしそうなら、私は何を調べるべきですか?

ありがとう!

0 投票する
9 に答える
149876 参照

.net - Windows / C# 開発用の埋め込み可能な Webkit コンポーネントはありますか?

Gecko レンダリング エンジンをラップするいくつかの COM コントロールを見てきました ( GeckoFXと、Mozilla が出荷するコントロール - mozctlx.dll )。.NET Winform アプリケーションに含めることができる Webkit のラッパーはありますか?

0 投票する
3 に答える
6354 参照

c# - regasm.exeがc#アセンブリを間違ったGUIDで登録するのはなぜですか?

Delphi(win32ネイティブ)アプリケーションからCOMを介して呼び出すac#アセンブリがあります。

これは、1台を除いて、テストしたすべてのマシンで機能します。

問題は、COMオブジェクトを作成しようとすると、Delphiアプリケーションが「クラスが登録されていません」と表示されることです。

さて、下のレジストリを見ると、HKEY_CLASSES_ROOT\DelphiToCSharp\CLSIDそこにリストされているGUIDは、AssemblyInfo.csのアセンブリGUIDと同じではありません。それは同じである必要があります-それはそれがインストールされている他のすべてのコンピュータで同じです。

を試しregasm /unregister delphitocsharp.dllましたが、レジストリキーが削除されます。次に、そうするとregasm delphitocsharp.dll、レジストリキーが返されますが、GUIDは以前と同じです(つまり、間違っています)。それでもDelphiは「クラスが登録されていません」と表示されます。

動作中のマシンのDelphiToCSharp.dllは、動作していないマシンのバージョンと同じです(md5で確認済み)。

私が考えることができるのは、古いバージョンのdllが以前に登録されていて、レガスムを混乱させているそのファイルの残りがまだ存在しているということだけです。

この問題を修正または少なくともさらに診断するにはどうすればよいですか?

0 投票する
2 に答える
671 参照

c# - OOXML で大きなバイナリ セグメントを使用する際の問題

システムの説明

OOXML を使用してドキュメントを生成するプロット コンポーネント。

プロット コンポーネントはいくつかの部分で構成されています。すべての部分は、OOXML ドキュメントへのインターフェイスを除いて、exe + dll として C++ で記述されています。後者のコンポーネントは、C#/.NET で作成された COM コンポーネントです。この主な理由は、.NET フレームワークにSystem.IO.Packagingが含まれているためです。これは、OOXML ドキュメントを処理するための非常に便利な組み込み機能です。

テンプレートの OOXML ドキュメントからドキュメントを作成し、特定の断片を実際のコンテンツに置き換えます。

これらのビットの 1 つは OLE サーバー コンポーネントです。基本的に、これは OOXML ファイル内のバイナリ セグメントです。このバイナリ セグメントを書き込むために、Packaging コンポーネントは分離ストレージを使用しているようです。

問題

8MB を超えるセグメントを書き込むと、「ドメインの ID を判別できません」という例外がスローされます。

C++ 側では、この例外にエラー ISS_E_ISOSTORE ( 0x80131450 ) が含まれています。

これを分析したところ、これはセキュリティ機能であり、信頼できないサードパーティ コンポーネントが巨大なファイルを書き込んで HD を完全に破壊するのを防ぎます。

その後、.NET/COM コンポーネントで多くのことを試しました (カスタム AppDomains の作成、最大許容値の属性の設定、独自のストリームの作成とそれらのパッケージング コンポーネントへの渡し) が、毎回同じ例外がスローされました。

これを機能させるにはどうすればよいでしょうか?

.NET コンポーネントが COM コンポーネントとしてインスタンス化されると、その AppDomain は常に信頼されないのでしょうか?

0 投票する
4 に答える
10818 参照

c++ - どちらが正しい?キャッチ (_com_error e) またはキャッチ (_com_error& e)?

どちらを使用する必要がありますか?

また

0 投票する
3 に答える
2176 参照

c# - リフレクション経由で呼び出された COM メソッドから元のエラー番号を取得する

.Net メソッドから呼び出す必要がある VB6 COM コンポーネントがあります。リフレクションを使用して COM オブジェクトのインスタンスを作成し、次の方法でアクティブにします。

インスタンス化する必要がある型の ProgId はさまざまであるため、tlbimp を使用して COM DLL に対してライブラリを作成するのではなく、GetTypeFromProgID を使用する必要があります。次に、Type.InvokeMember を使用して、次のようにコードで COM メソッドを呼び出します。

発生した TargetInvocationException をすべてキャッチしてログに記録し、TargetInvocationException.InnerException フィールドから詳細なエラーの説明を取得できます。ただし、COM コンポーネントが Error.Raise を使用してエラー番号を生成することはわかっており、呼び出し元の .Net アプリケーションで何らかの方法でこれを取得する必要があります。

この問題は、TargetInvocationException が通常の COMException である場合に予想されるエラー番号を含まないことに起因しているようです。

.Net コードの COM オブジェクトからエラー番号を取得するにはどうすればよいですか?

また

COM コンポーネントが失敗したときに、TargetInvocationException ではなく COMException (エラー番号を含む) を引き起こす方法で、これと同じ呼び出しを行うことはできますか?

また、ターゲット プラットフォームは .Net 2.0 であり、VB6 のソース コードにアクセスできますが、VB6 から発生したエラー メッセージを変更してテキストの一部としてエラー コードを含めることは、ちょっとしたハックだと考えています。

0 投票する
2 に答える
589 参照

winforms - Winforms アプリケーションで Office 2003/2007 COM オブジェクト (正しいもの) を選択する

インストールされている Office のバージョンに応じて、Office 2003 または Office 2007 COM オブジェクトを参照する必要がある Windows フォーム アプリケーション (C# または VB.NET) を作成しています。このシナリオを処理し、実行時に正しい COM オブジェクトを参照する最善の方法は何ですか?

0 投票する
3 に答える
2806 参照

.net - ランタイム呼び出し可能ラッパー (RCW) スコープ - プロセスまたはアプリケーション ドメイン?

アンマネージ COM オブジェクトを参照するときのランタイム呼び出し可能ラッパー (RCW) のスコープは何ですか? ドキュメントによると:

ランタイムは、そのオブジェクトに存在する参照の数に関係なく、COM オブジェクトごとに正確に 1 つの RCW を作成します。

「推測」しなければならない場合、この説明は「プロセスごとに1つ」を意味するはずですが、それは本当ですか? 追加のドキュメントは大歓迎です。

私のアプリケーションは独自のアプリケーション ドメイン (Outlook アドイン) で実行されます。カウントが 0 になるまでループで Marshal.ReleaseComObject(x) を使用するとどうなるかを知りたいです (推奨)。他のアドイン (同じ Outlook プロセス内の他のアプリケーション ドメインで実行されているもの) から参照を解放しますか?

編集:パーフェクト - 今、混乱はさらに大きくなっています。2 つの回答 (Lette と Ilya から) に基づいて、2 つの異なる回答があります。MSDNの公式ドキュメントにはプロセスごと (ver. 2.0 以降の場合) と書かれていますが、ver. 2.0 以降ではこの文がありません。ドキュメントの1.1

同時に、Mason Bendixen の記事では、それは appdomain ごとであると述べています。

彼の記事は古い (2007 年 4 月) ため、明確化を求めるメールを彼に送信しましたが、他の誰かが何かを追加する必要がある場合は、追加してください。

ありがとう