在F#中引用ActiveX

时间:2014-08-21 18:17:59

标签: reference f# interop activex f#-interactive

如果我想在.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

1 个答案:

答案 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

如果您引用互操作程序集,则您将具有属性和方法的“普通”类型。