Visual Basicは、このC#でCOMオブジェクトのインスタンスを作成するには?
Set app = GetObject(, "Word.Application")
ように使用することができるGetObject
機能は、図1Cエンタープライズはまた、プレーン文字列を受け取り、対応するCOMオブジェクトを返すnew COMObject()
オペレータを有しています。
この機能に相当するC#とは何ですか?
Visual Basicは、このC#でCOMオブジェクトのインスタンスを作成するには?
Set app = GetObject(, "Word.Application")
ように使用することができるGetObject
機能は、図1Cエンタープライズはまた、プレーン文字列を受け取り、対応するCOMオブジェクトを返すnew COMObject()
オペレータを有しています。
この機能に相当するC#とは何ですか?
GetObject
の機能がMicrosoft.VisualBasic
名前空間にあります。これに満足していない、私はその関数を逆コンパイルし、COMオブジェクトを作成する方法を見つけました:Marshal.GetActiveObject
とActivator.CreateInstance
。
COMオブジェクトに反映するには、Oleauto.hのIDispatch::GetTypeInfo
メソッドを使用できます。 CodeProjectには、C#用のきちんとしたラッパーもあります。
1C Automation( "V83.Application")のようなオブジェクトは、すぐにC#のdynamic
で動作しないようです。それに対処するために、私はクラスを作成し、System.Dynamic.DynamicObject
から継承しました。これによりInvokeMethod
を無効にしてIDispatch::Invoke
と呼ぶことができました。
あなたは、デフォルトでVBは安全タイプではない、C#は、一般的に、あなたが入力し相互運用ラッパーを生成するために持っている必要があり、ある
COMクラスのプログレッシヴIDを渡すことで、COMオブジェクトを作成するために、
Activator.CreateInstance(string Progid)
メソッドを使用することができますComオブジェクトをC#で使用する前に安全にしてください。https://msdn.microsoft.com/en-us/library/ms404285(v=vs.110).aspxを参照してください。 – MikeT