問題タブ [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.
generics - サービス対象コンポーネントでの汎用リストの使用
クラスのプロパティとして汎用リストを使用しようとしていますServicedComponent
...
MyList
コードはエラーなしでコンパイルされますが、別のクラスの com オブジェクトでプロパティを使用しようとすると、リストに値が追加されません。Googleは、コンポーネントでジェネリックを使用できないと「言った」が、その理由と問題の適切な解決策をまだ見つけていない.
誰かが私を助けることができますか?
c# - stdole.dll は何をしますか?
独自の C++ COM コンポーネントを使用する大規模な C# (.net 2.0) アプリと、同じく COM 経由でアクセスされるサードパーティの指紋スキャナー ライブラリがあります。本番環境では、独自の C++ COM コンポーネントからのイベントが発生し、正常に受信されたにもかかわらず、フィンガープリント ライブラリからの一部のイベントが C# アプリに発生しないという問題が発生しました。
MSINFO32 を使用して、動作中のシステムにロードされているモジュールと障害が発生しているシステムのモジュールを比較すると、STDOLE.DLL が GAC になく、障害のあるプロセスにロードされていないことが原因であることがわかりました。
このファイルを GAC にドラッグすると、フィンガープリント COM ライブラリからイベントが正常に返されました。
では、stdole.dll は何をするのでしょうか? サイズは 16k なので、それほど多くはありません... STDOLE32 のような別のライブラリへの何らかのリンクですか? その不在はなぜそのような奇妙な行動を引き起こすのでしょうか?
stdole.dll の配布方法 これは XCOPY デプロイ アプリであり、GAC は使用しません。それをリソースとしてパッケージ化し、System.EnterpriseServices.Internal.Publish.GacInstall を使用して GAC にあることを確認する必要がありますか?
c++ - COM/ATL (MFC なし) を使用して既存のファイルを開く方法
ATL にリンクする既存の Windows C++ アプリケーションがあります。既存の Excel ファイルを開いて、いくつかのプロパティにアクセスする必要があります。私がしなければならないことの 1 つは、ユーザーが現在 Excel ファイルを表示しているかどうかを判断することです。
どのバージョンかはわかりませんが、ユーザーが Excel をインストールしていると推測できます。
既存の Excel ファイルに添付する C++ / COM コードは何ですか? ファイルが現在 Excel のインスタンスによって開かれているかどうかを確認するにはどうすればよいですか? ファイル名を知っていると仮定します。私は 15 分間グーグルで検索しましたが、MFC なしでこれを行う方法がわかりませんでした。
c# - COM 登録と GAC
Web プロジェクト、C# ライブラリ プロジェクト、および Visual Studio 2005 の Web セットアップ プロジェクトがあります。Web プロジェクトでは、C# ライブラリを GAC に登録する必要があります。これは簡単です。GAC フォルダーをセットアップ プロジェクトに追加し、そこに C# ライブラリのプライマリ出力をドロップするだけです。C# ライブラリも、COM 相互運用のために登録する必要があります。GAC フォルダのプライマリ出力をクリックして選択し、Register プロパティを vsdrpCOM に変更します。セットアップ プロジェクトをビルドして実行しましたが、DLL が COM に登録されません。
これは私にとって本当に驚きではありません。COM の DLL を適切に登録するために、RegistrationServices.RegisterAssembly を使用するカスタム アクションを持つインストーラー クラスを常に追加する必要がありました。そのため、私は何年も受け入れてきたこの回避策を自分の状況に適用します。ここで、セットアップ プロジェクトの GAC フォルダー内のプライマリ出力に割り当てられたカスタム アクションが、セットアップ プロジェクトのビルドを妨げていることがわかりました。
私はいつも、.NET と COM をセットアップ プロジェクトと展開プロジェクトでうまく機能させるために何かをハッキングしているように感じていました。私の問題を解決する適切な方法は何ですか?
delphi - アパートメント間の ActiveX イベント
環境: VS2008 (ATL)、Borland Developer Studio 2006。
皆さんこんにちは。ActiveX コントロール イベントに問題があります。
私のアプリのアーキテクチャの簡単な説明は次のとおりです。
STA ActiveX コントロール (別名コントロール) と MTA COM オブジェクト (別名オブジェクト) を含むインプロセス COM サーバーがあります。
以下は、コントロールおよびオブジェクト インターフェイスの IDL 定義です。
クライアントは、MTA オブジェクトを作成し、その DoWork メソッドを呼び出すフォーム上に ActiveX コントロールを備えた Delphi アプリケーションです。
このメソッドは、ActiveX コントロール コクラスの Fire_SomeEvent メソッドを直接呼び出し、「this」をパラメーター (IObject インターフェイスへのポインター) として渡します。Delphi コードはイベントを正常に受信しますが、IObject のメソッドまたはプロパティ(わかりやすくするために idl には示されていません)にアクセスしようとすると、oleaut32.dll でアクセス違反が発生します。
1 つの重要な注意事項 - ATLCPImplMT クラスを使用して、さまざまなスレッドから発生するイベントを実装します (詳細については、 http://support.microsoft.com/kb/280512を参照してください)。この実装により、イベントが発生したときにアパートメントを切り替えることができます (オブジェクトの MTA アパートメントから STA Delphi フォーム アパートメントへ)。標準の ATLCPImpl クラスを使用するとすべて正常に動作するため、この問題は不適切なイベント パラメータのマーシャリングに関連していると考えられます。
マンションをまたぐイベントに制限はありますか?おそらく、activex オブジェクトを正しく操作するには、特別な Delphi 環境のセットアップが必要です...
vba - Excel VBA で New キーワードを使用する場合と CreateObject を呼び出す場合の違いは何ですか?
次のような VBA コードを作成するかどうかを判断するには、どの基準を使用する必要がありますか。
またはこのように:
?
com - 空のBSTRとNULLのBSTRの間に違いがあるべきですか?
インターフェイスを維持する場合COM
、空は?BSTR
と同じように扱う必要があります。NULL
言い換えれば、これらの2つの関数呼び出しは同じ結果を生成する必要がありますか?
.net - Excelから.NETCOMWebサービスラッパーを呼び出す
Excel2003モジュールからWebサービスを呼び出そうとしています。私が実装した方法は、公開する必要のあるすべてのクラス/メソッドを含む.NETCOMライブラリを作成することです。ExcelからWebサービスを照会するメソッドを呼び出そうとすると、エラーなしでその行で実行が停止します。それは参照と関係があるのでしょうか?Microsoft.Web.Services2.dllを使用しています。私はそれをC:\ WINDOWS\SYSTEM32に入れてみました-運がありません
com - ISupportErrorInfoの実装-それはどういう意味ですか?
ISupportErrorInfo
インターフェイスはどういう意味ですか?私はそれを理解するのに少し戸惑っています。MSDNから:
このインターフェイスにより、エラー情報をコールチェーンの上位に正しく伝播できます。エラー処理インターフェースを使用する自動化オブジェクトは、ISupportErrorInfoを実装する必要があります。
このメソッドは、インターフェイスがIErrorInfoインターフェイスをサポートしているかどうかを示します。
S_OKを返すとはどういう意味InterfaceSupportsErrorInfo
ですか?すべてのインターフェースに対してS_OKを返す必要がありますか?ほんの一部?
c# - .NET の UserControl を COM 経由で埋め込みコントロールとして使用する
既存の .NET 3.5 アプリケーションを Eclipse のプラグインに移植しています。
C# で記述されたカスタム UserControl を Eclipse に組み込みたいと考えています。COM コントロールとして正常にエクスポートされ、Eclipse Europa でうまく動作します。
Ganymede では、OLE ロード コードが変更されたようで、元々 Europa で機能していたものが失敗します。
具体的なエラーは、Ganymede がコントロールをロードし、IOleObject をクエリし、適切なインターフェイスを受け取り、その上で SetClientSite を呼び出すときに発生します。これにより、オブジェクトが両方の参照を失い、割り当てが解除されます (Ganymede はその後クラッシュします)。まったく同じコントロールが、Visual C++ デザイナーと Europa の両方で問題なく機能します。
明らかな .NET 属性と UserControl 以外に、継承する必要がある特定のクラスはありますか? 実装する必要がある特定のインターフェイス、または Europa/VC と Ganymede の間の特定の動作の変更はありますか?
ありがとう!