【问题标题】:if WinExist not working as expected如果 WinExist 没有按预期工作
【发布时间】:2017-07-17 03:26:55
【问题描述】:

我在 .ahk 上截取了一段代码

#k::
  if WinExist("a") {
    Sendinput test
    }
return

只有在打开名为“a”的窗口时,此代码才应发送“test”,正如我从文档中看到的那样。但它不起作用 -(。它一直在发送字符串“test”。我需要代码 sn-p 来做某事;例如发送字符串或其他东西,只有当特定窗口打开并且什么都不做时,该窗口才关闭。你能告诉我我做错了什么吗。

【问题讨论】:

  • 如果存在活动窗口,则表达式的计算结果为真(请参阅WinTitle & Last Found Window)。您几乎找不到在任何给定时间都没有活动窗口的系统。如果您需要识别特定窗口,请按照文档进行操作。
  • 那么,与打开窗口的确切名称匹配的命令是什么。我一直在试图找到一个但文档。太不直观了。

标签: windows scripting autohotkey


【解决方案1】:

您的代码对我来说确实可以正常工作。

但是,除非您使用过“SetTitleMatchMode”,否则如果您有任何以“a”开始的窗口标题,则您的条件将为真。

“DetectHiddenText”也可能影响WinExist的返回值。

从一个更独特的标题开始解决您的问题,像这样

#k::
  if WinExist("gob.txt - Notepad") {
    Sendinput test
    }
return

当您在记事本中打开“gob.txt”时,测试此代码是否按预期工作。然后在没有打开文件时进行测试。尝试不同的 SetTitleMatchMode 设置。希望您最终能够找出问题所在。我不能这样做,因为我不知道你的系统上打开了哪些窗口。

通过右键单击任务栏上的 AutoHotKey 图标并选择“编辑此脚本”并仅包括您正在测试的代码,它还有助于清除可能影响您的测试的其他代码。

祝你好运

【讨论】:

  • 那么有没有一个命令可以匹配特定的打开窗口,或者这是不可能的?
猜你喜欢
  • 2015-08-02
  • 2012-04-12
  • 1970-01-01
  • 2013-04-12
  • 2021-01-31
  • 2014-11-22
  • 1970-01-01
相关资源
最近更新 更多