2012-01-17 21 views
0

答えが明白であるかどうか質問してください。私は確かにCOMの専門家です。Excel COMアドインDLL - C#から直接使用できますか?

私は、通常はExcelへのアドインとして使用される2つのDLLを持っています(Excelがプログラムによって開かれた直後にロードされます)。私は彼らがCOMであると仮定します。それらがアンマネージC++ DLLであるかどうかをどのように確認できますか?

私はC#プロジェクトで参照として使用し、Excelを操作する代わりに直接メソッドを呼び出すことはできますか?これにはどんなトリックがありますか?これは、これらの方法を利用する最善の方法ですか?

パフォーマンスは私にとって大きな問題であり、Excelを介してDLLコードを呼び出そうとすると非常に苦しいです。 Excelが犯罪者であるかどうかは分かりませんが、明らかに可能な限り多くの仲介者の接触を排除することが理想的です。

+0

どのDLLを使用していますか? –

+0

これらは私の会社で作成された独自のDLLであり、アンマネージドC++ DLLの場合とそうでない場合があります。いくつかのGoogle検索に基づいて、商用ツールなしでDLLコードへの呼び出しをリバースエンジニアリングすることはほとんど不可能と思われる... – PatternMatching

答えて

1

実際にCOM DLLであるかどうかを調べることをお勧めします。 depends .exeを使用すると、DLLが予期したCOM機能の一部をエクスポートするかどうかを確認できます。DllGetClassObjectおよびDllCanUnloadNowは適切なインジケータです。その場合は、Visual Studioを使用してDLLをプロジェクトに直接インポートすることができます。私の勇気は、OLEオートメーションをサポートするCOMオブジェクトにアプローチすることであなたの走行距離が変わるかもしれないと私に伝えています。

それ以外の場合は、おそらく単純な古いDLLがあります。ここでも、どの機能がエクスポートされているかを確認し、p/invokeを使用して署名を取得する方法を説明します。

関連する問題