【问题标题】:COM Call Fails with Member Not FoundCOM 调用失败,未找到成员
【发布时间】:2013-06-07 00:08:10
【问题描述】:

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

【问题讨论】:

    标签: com autohotkey


    【解决方案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 代码块中。

    【讨论】:

      猜你喜欢
      • 2012-04-30
      • 1970-01-01
      • 2017-07-05
      • 2014-03-20
      • 1970-01-01
      • 1970-01-01
      • 2021-03-14
      • 2013-01-26
      • 2019-09-18
      相关资源
      最近更新 更多