代码之家  ›  专栏  ›  技术社区  ›  JustinCoplin

在多个条件下执行

  •  1
  • JustinCoplin  · 技术社区  · 8 年前

    简单的问题,我肯定错过了一些显而易见的东西。

    我试图创建一个子例程,轮询打开的窗口,我的目标是通过一个循环来实现这一点,该循环将在满足两个条件时运行。我不断收到一个错误:

    运行时错误13:类型不匹配

    在Do-while循环中,在搜索了类似的问题之后,我仍然不太确定我做错了什么。

    以下是避免出错的一行:

    Sub FindHWND()
        Dim HWNDOut as string
        Dim Timer as Date
        Timer = Now()
        'This following line is the one erroring out. 
        Do While ((Now() < Timer + TimeValue("00:00:10")) And (HWNDOut = 0))
            HWNDOut = CStr(Hex(FindWindowEx(0&, 0, "SunAwtFrame", "Graph.graphml - yEd")))
            Debug.Print HWNDOut
            Sleep (100)
        Loop
        'Other, following sub and code that is not relevant
    End Sub
    

    哪里 Timer Now() 在循环开始之前,以及 HWNDOut 是我要查找的窗口的句柄,它将在循环中找到。

    这个循环所做的就是每隔100毫秒查看第三方程序的窗口是否已打开,以防止下一个子例程中的命令丢失。

    后记:如果有人对如何做得更好有任何建议,我洗耳恭听。这是我第一次使用UI自动化,所以我还在学习。 编辑:为上下文块添加更多代码。

    2 回复  |  直到 7 年前
        1
  •  3
  •   Gary's Student    8 年前

    使用:

    And (HWNDOut = 0))
    

    你在比较 一串 到数值。。。。。。。。。。。。。。这将失败。

        2
  •  0
  •   chillin    8 年前

    尝试将变量名Timer更改为其他名称,例如StartTime(想想VBA中有一个Timer函数,它返回一个不同类型的值;所以最好不要使用保留或语义重要的单词)。

    可能有用,可能不行,祝你好运。

    推荐文章