我有一个应用程序(我无法控制源代码),它公开了一个可以在VBA中正常工作的COM接口,例如:
Sub test()
Set myApp = CreateObject("MyApp.Application")
val1 = myApp.SubPart.Size
MsgBox CStr(val1)
myApp.SubPart.IncreaseSize
End Sub
这完美无缺。当我在AutoHotkey-L中执行等效操作时:
myApp := ComObjCreate("V6.Application")
val1 := myApp.SubPart.Size
MsgBox %val1%
myApp.SubPart.IncreaseSize
消息框将触发,并为我提供正确的值。最后一行停止并显示错误:
0x80020003 - 找不到会员
具体来说:IncreaseSize
我能做些什么才能让它在AHK中的功能相同?
答案 0 :(得分:1)
对于其他坚持这一点的人,我首先改为使用32位ANSI AutoHotkey可执行文件解决了这个问题。对我来说,这是在:
C:\Program Files\AutoHotkey\AutoHotkeyA32.exe
然后我将任何COM方法调用更改为嵌入到ScriptControl调用中:
myApp := ComObjCreate("MyApp.Application")
val1 := myApp.SubPart.Size
MsgBox %val1%
SC := ComObjCreate("ScriptControl")
SC.Language := "VBScript"
SC.Timeout := -1
code =
(
Set MyApp = CreateObject("MyApp.Application")
MyApp.SubPart.IncreaseSize
)
sc.ExecuteStatement(code)
当然,Size
读取也可以移动到VB代码块中。