Ale*_*xan 1 f# interop activex reference f#-interactive
如果我想在.NET项目中使用ActiveX,我使用Add Reference ...对话框将其添加为引用,它会生成实际引用的interop程序集.
但是如果我想使用F#Interactive中的ActiveX,我应该首先创建F#项目,添加ActiveX引用然后从F#引用生成的互操作程序集:
#r "obj\\Interop.MyActiveX.dll"
Run Code Online (Sandbox Code Playgroud)
或者可以直接引用它,例如在VB脚本中:
Set mydoc = CreateObject("MyActiveX")
Run Code Online (Sandbox Code Playgroud)
或者在PowerShell中:
$mydoc = new-object -comobject MyActiveX
Run Code Online (Sandbox Code Playgroud)
您可以像这样直接创建ActiveX控件:
let actxtype = Type.GetTypeFromProgID("MyActiveX")
let instance = Activator.CreateInstance(actxtype)
Run Code Online (Sandbox Code Playgroud)
但是你的实例将是'obj = System .__ ComObject'类型,你将不得不使用这样的反射来调用它的方法:
actxtype.InvokeMember("MethodName", BindingFlags.InvokeMethod | BindingFlags.Public,
null, instance, new[] { (*method parameters*) } );
Run Code Online (Sandbox Code Playgroud)
这是关于Invoke的文档:http://msdn.microsoft.com/en-us/library/de3dhzwy( v= vs.110).aspx
如果引用互操作程序集,则将具有属性和方法的"常规"类型.
| 归档时间: |
|
| 查看次数: |
178 次 |
| 最近记录: |