1

我有一个应用程序(我无法控制它的源代码),它公开了一个可以在 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 中发挥同样的作用?

4

1 回答 1

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 代码块中。

于 2013-05-16T21:29:47.827 回答