如何从自动热键脚本调用vb6中编码的.dll?

如何从自动热键脚本调用vb6中编码的.dll?,vb6,autohotkey,Vb6,Autohotkey,我需要从自动热键调用.dll文件,但无法调用,因为我可以从vb6访问dll,如下所示 //spaceCalculator.dll Dim obj As New spaceCalculator.calculate msgbox obj.getData("shapes",2,100,100); obj:=CreateObject("projectName.ClassName"); // using CLSID obj.FunctionName(Parameters); 我想从Aut

我需要从自动热键调用.dll文件,但无法调用,因为我可以从vb6访问dll,如下所示

//spaceCalculator.dll
Dim obj As New spaceCalculator.calculate
   msgbox obj.getData("shapes",2,100,100);
 obj:=CreateObject("projectName.ClassName"); // using CLSID
  obj.FunctionName(Parameters); 
我想从AutoHotkey调用它,如下所示,但抛出错误-3/-4。dll在脚本的根文件夹中

DllCall("spaceCalculator.dll\getUsageData","Str","Shapes","Float",2,"Float",100,"Float",100)

VBScript使用COM。您的自动清理使用动态链接。这就是帮助所说的

VBScript、JScript和组件对象模型(COM)

VBScript和JScript可以通过Windows自动热键脚本嵌入到脚本中,该脚本还提供对COM的访问

此外,可以通过DllCall直接使用COM,如www.autohotkey.COM/wiki/index.php?title=COM_Wrappers所示


我有一个新的ID。虽然help说您可以使用DllCall for COM,但它通过DLL函数调用非常灵活地使用COM(您需要调用很多函数,比如
CoInitilize
GetClassObject
),而不是运行时来完成所有繁重的工作

根据帮助建议,将VBScript放入Autoit脚本中

注意:在VBScript中,您必须使用后期绑定,以便

 Dim obj As New spaceCalculator.calculate
变成

 Set obj = CreateObject("spaceCalculator.calculate")

虽然你的物体看起来是错的。Calculate看起来像一个方法,而不是一个对象本身。

我找到了一个解决方案,AutoHotKey可以在dll中定义类,如Vb6和C#,如下所示

//spaceCalculator.dll
Dim obj As New spaceCalculator.calculate
   msgbox obj.getData("shapes",2,100,100);
 obj:=CreateObject("projectName.ClassName"); // using CLSID
  obj.FunctionName(Parameters); 

谢谢大家

我肯定你不会帮我的。我用VBA代码作为例子,说明如何从.dll调用函数,但我的工作是从Authotey脚本调用相同的.dll,这表明函数无法访问。因为它在一个类中。。。