2017-05-31 6 views
-1

Visual Basicは、このC#でCOMオブジェクトのインスタンスを作成するには?

Set app = GetObject(, "Word.Application") 

ように使用することができるGetObject機能は、図1Cエンタープライズはまた、プレーン文字列を受け取り、対応するCOMオブジェクトを返すnew COMObject()オペレータを有しています。

この機能に相当するC#とは何ですか?

+0

COMクラスのプログレッシヴIDを渡すことで、COMオブジェクトを作成するために、Activator.CreateInstance(string Progid)メソッドを使用することができますComオブジェクトをC#で使用する前に安全にしてください。https://msdn.microsoft.com/en-us/library/ms404285(v=vs.110).aspxを参照してください。 – MikeT

答えて

0

GetObjectの機能がMicrosoft.VisualBasic名前空間にあります。これに満足していない、私はその関数を逆コンパイルし、COMオブジェクトを作成する方法を見つけました:Marshal.GetActiveObjectActivator.CreateInstance

COMオブジェクトに反映するには、Oleauto.hのIDispatch::GetTypeInfoメソッドを使用できます。 CodeProjectには、C#用のきちんとしたラッパーもあります。

1C Automation( "V83.Application")のようなオブジェクトは、すぐにC#のdynamicで動作しないようです。それに対処するために、私はクラスを作成し、System.Dynamic.DynamicObjectから継承しました。これによりInvokeMethodを無効にしてIDispatch::Invokeと呼ぶことができました。

0

あなたは、デフォルトでVBは安全タイプではない、C#は、一般的に、あなたが入力し相互運用ラッパーを生成するために持っている必要があり、ある

関連する問題