如何从 AutoHotkey 脚本调用用 vb6 编码的 .dll?

How to call .dll coded in vb6 from AutoHotkey Script?

我需要从 AutoHotkey 调用 .dll 文件但不能,但我可以按如下方式从 vb6 访问 dll

//spaceCalculator.dll
Dim obj As New spaceCalculator.calculate
   msgbox obj.getData("shapes",2,100,100);

我想按如下方式从 AutoHotkey 调用它,但抛出错误 -3/-4。 .dll 在脚本的根文件夹中。

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

您的 VBScript 使用 COM。您的 Autothing 使用动态链接。帮助是这么说的。

VBScript, JScript, and Component Object Model (COM)

VBScript and JScript may be embedded in a script via Windows Scripting for AutoHotkey, which also provides access to COM.

Also, COM may be used directly via DllCall as demonstrated at www.autohotkey.com/wiki/index.php?title=COM_Wrappers.

我有一个新的 ID。虽然帮助说您可以对 COM 使用 DllCall,但通过 DLL 函数调用使用 COM 非常繁琐(而且您必须调用很多,例如 CoInitilizeGetClassObject),而不是运行时完成所有繁重的工作.

按照帮助建议将 VBScript 放入 Autoit 脚本。

请注意,在 VBScript 中您必须使用后期绑定,因此

 Dim obj As New spaceCalculator.calculate

变成

 Set obj = CreateObject("spaceCalculator.calculate")

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

我找到了 AutoHotKey 可以 dll 的解决方案,其中 类 的定义类似于 Vb6 和 C#,如下所示

 obj:=CreateObject("projectName.ClassName"); // using CLSID
  obj.FunctionName(Parameters); 

谢谢大家