COM呼叫失败,未找到成员

时间:2013-05-16 20:42:23

标签: com autohotkey

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

1 个答案:

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