试图在我的 C# 应用程序中使用一些 COM 对象。
第一种变体:
using AXVLC;
Type t = Type.
GetTypeFromCLSID(
Guid.Parse("E23FE9C6-778E-49D4-B537-38FCDE4887D8")
);
AXVLC.VLCPluginClass vid = Activator.CreateInstance(t) as VLCPluginClass;
但出现此类错误: 无法嵌入互操作类型“AXVLC.VLCPluginClass”。请改用适用的接口。ComObjectCalls
我知道 COM 对象不公开公共构造函数,那么我将不得不找到使用该对象的其他方法。很多时候 COM 对象使用工厂模型来创建对象的实例(例如 IClass instance = COMClass.CreateInstance(); )
或尝试使用Activator.CreateInstance()
另外我对 COM 对象还有另一个问题: - 我使用的是动态类型:动态 shell = AutomationFactory.CreateObject("WMPlayer.OCX.7");
它创建 - 好的。但是如何知道,我可以在其中使用哪些方法。我该如何施放它?
主要问题是:我想用 Silverlight 应用程序访问 COM 对象。所以有一种方法可以使用动态/expondo 对象或使用 P/Invoke 在 Silverlight 中调用一些本机库,例如:
[DllImport("user32.dll", CharSet = CharSet.Auto, EntryPoint = "MessageBox")]
public static extern IntPtr MineMessageBox(int hWnd, string text,
string caption, uint type);
...
MineMessageBox(0, "Hello World", "Platform Invoke Sample", 0);
在 Silverlight 中访问 COM 对象功能的最佳方法是什么,并且还可以在运行时获取有关此 COM 对象的所有信息(获取方法,我可以调用等)
谢谢!