这两天在搞一个项目,其中涉及到要用vbs调用dll,用vs写个dll,还不是太辣手,但是要用vbs 调用dll,确实还是有点头大,但还好,我们有google。。。。
先提下用vb.net 自己调用自己的dll方法:在解决方案资源管理器中有个引用,右键→添加引用→出来一个消息框→点击浏览选项卡→选择DLL文件,就这样。
下面开始vbs 调用vb.net :
'System.Runtime.InteropServices这个名称空间提供了一系列的类来对COM对象进行操作
Imports System.Runtime.InteropServices
'定义为com组件
'命名为Test.dll
'为此 DLL 指定 GUID
<ComVisible(True)> <ProgId("Test.DLL")> <Guid("df2dac4d-ba8a-4ecc-b76e-958c1bc32f1f")> _
Class Class1
Public Sub myTest()
Meessagebox.show("Hello kitty") 'code自己的代码
End Sub
End Class
'在生成dll之前,需要对程序集进行签名
在Choose a strong name key 下选择new,写入自己的key file name:例如
选择ok,然后生产dll文件。
ok,dll建好了,那么下面就该调用了
1.以管理员省份运行cmd,转到你的RegAsm.exe所在的.net 框架文件夹(4.5或者2.0文件夹下都有)下进行编写如下命令,如,我的.net 框架在(C:\Windows\Microsoft.NET\Framework64\v2.0.50727),那么在你的cmd界面所显示的应该是:
C:\Windows\Microsoft.NET\Framework64\v2.0.50727>regasm /codebase C:\Temp\VBScriptDotNetDLL.dll
其中c:\Temp为dll所在的文件夹,后面的那自然就是dll文件名了。
2.下面接下来要做的,大家都懂的,写自己的vbs:test.vbs
Dim mObj
set mObj = CreateObject("Test.DLL") '注意了:这里调用的是你前面的命名Test.DLL 而不是我们平时调用的所用的Class1
blnValid = mObj.myTest()'myTest你的方法
3,最后测试一下你的成果:
cmd->转到你dll文件夹下->wscript test.vbs
以上如果不清楚,请详细见:http://www.dirkstrauss.com/programming/calling-a-net-dll-from-vbscript#.UaQMu7KBSDs