如何从 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 非常繁琐(而且您必须调用很多,例如 CoInitilize
和 GetClassObject
),而不是运行时完成所有繁重的工作.
按照帮助建议将 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);
谢谢大家
我需要从 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 非常繁琐(而且您必须调用很多,例如 CoInitilize
和 GetClassObject
),而不是运行时完成所有繁重的工作.
按照帮助建议将 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);
谢谢大家