此脚本中的什么导致窗口最小化?

时间:2019-07-08 15:07:25

标签: autohotkey

此简单脚本的目标是在关注特定程序时检测空闲间隔,然后在该空闲间隔过去时发送简单的击键。我在4台PC上运行此脚本,但得到了意外的结果。某些PC在脚本运行时将窗口最小化。其他PC可以按预期运行它。每台PC上的脚本都相同。

我通过右键单击脚本来调用此脚本(即,不运行该脚本的已编译exe版本)。以管理员身份运行它似乎在某些客户端上获得了更好的结果,在一个客户端上,这没有什么区别,并且最小化了窗口。

如上所述,该脚本在某些PC上可以正常工作。没有错误消息,只会使我的窗口最小化。在我的新手看来,该代码中的任何内容都不应导致窗口最小化。

#Persistent
    SetTimer, Timer_check,3000

    Timer_check:
        if WinActive("ahk_exe gta5.exe")
        {
            if (A_TimeIdlePhysical > 31301 && WinActive("ahk_exe gta5.exe")) {
                Gosub, keepActive
                ToolTip, We're currently idle TimeIdle is %A_TimeIdle% and TimeIdlePhysical is %A_TimeIdlePhysical%
                sleep 1000
                ToolTip
            }

            if (A_TimeIdle < 31301) {
                ToolTip
            }
        }
    return

keepActive: ; keep active sub.
    if WinActive("ahk_exe gta5.exe")
    {
        Send, {` down} ; Press the ` key to keep us active. It holds the key for 0.2 seconds.
        Sleep 200
        Send, {` up}
    }
return```

1 个答案:

答案 0 :(得分:1)

您正在尝试发送重音符号/反引号,这是AHK(`)中的默认转义字符。要解决此问题,请发送其他字符或转义转义字符,如下所示:

Send, {`` down}
Sleep 200
Send, {`` up}

在不进行转义的情况下,它仅发送上下键。 WinKey + down组合键最小化了一个非最大化的窗口,这可能与您为什么偶尔看到游戏窗口最小化的原因有关。

https://www.autohotkey.com/docs/commands/_EscapeChar.htm


编辑:添加了用于测试的脚本

#Persistent
SetTimer, Timer_check, 3000

Timer_check:
If WinActive("ahk_exe gta5.exe") {
    If (A_TimeIdlePhysical > 31301 && WinActive("ahk_exe gta5.exe")) {
        Send , z
        ToolTip, We're currently idle TimeIdle is %A_TimeIdle% and TimeIdlePhysical is %A_TimeIdlePhysical%
        sleep 1000
        ToolTip
    }
    If (A_TimeIdle < 31301)
        ToolTip
}
Return