如果我想在.NET项目中使用ActiveX,我使用Add Reference ...对话框将其添加为引用,它会生成实际引用的interop程序集。
但是如果我想使用F#Interactive中的ActiveX,我应该首先创建F#项目,添加ActiveX引用然后从F#引用生成的互操作程序集:
#r "obj\\Interop.MyActiveX.dll"
或者可以直接引用它,例如在VB脚本中:
Set mydoc = CreateObject("MyActiveX")
或在PowerShell中:
$mydoc = new-object -comobject MyActiveX
答案 0 :(得分:5)
您可以直接创建一个ActiveX控件:
let actxtype = Type.GetTypeFromProgID("MyActiveX")
let instance = Activator.CreateInstance(actxtype)
但你的实例将是'obj = System .__ ComObject'类型,你必须使用这样的反射来调用它的方法:
actxtype.InvokeMember("MethodName", BindingFlags.InvokeMethod | BindingFlags.Public,
null, instance, new[] { (*method parameters*) } );
这是关于调用的文档:http://msdn.microsoft.com/en-us/library/de3dhzwy(v=vs.110).aspx
如果您引用互操作程序集,则您将具有属性和方法的“普通”类型。