此简单脚本的目标是在关注特定程序时检测空闲间隔,然后在该空闲间隔过去时发送简单的击键。我在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```
答案 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