Visual Basic中具有GetObject
功能,其可以這樣如何在C#中創建COM對象的實例?
Set app = GetObject(, "Word.Application")
1C企業可以使用也具有new COMObject()
運算符,它也需要一個普通的字符串並返回相應的COM對象。
這個函數的C#等價物是什麼?
Visual Basic中具有GetObject
功能,其可以這樣如何在C#中創建COM對象的實例?
Set app = GetObject(, "Word.Application")
1C企業可以使用也具有new COMObject()
運算符,它也需要一個普通的字符串並返回相應的COM對象。
這個函數的C#等價物是什麼?
我在Microsoft.VisualBasic
命名空間中發現了相同的GetObject
函數。不滿意這一點,我已經反編譯該函數,並發現它如何創建COM對象:Marshal.GetActiveObject
和Activator.CreateInstance
。
要反思COM對象,可以使用Oleauto.h中的IDispatch::GetTypeInfo
方法。對於C#CodeProject也有一個整潔的包裝。
一些對象,如1C自動化(「V83.Application」)似乎不適用於C#的dynamic
馬上。爲了解決這個問題,我創建了一個類,並從System.Dynamic.DynamicObject
繼承。這使我可以覆蓋InvokeMethod
並在其上呼叫IDispatch::Invoke
。
可以使用Activator.CreateInstance(string Progid)
方法通過將COM類的程序ID來創建一個COM對象
VB默認不是類型安全的,C#是,通常你必須有生成Interop包裝打字安全的COM對象,然後才能在C#中使用它,請參閱https://msdn.microsoft.com/zh-cn/library/ms404285(v=vs.110).aspx – MikeT