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