Autohotkey 自动热键:如何确定某个窗口是否与之交互

Autohotkey 自动热键:如何确定某个窗口是否与之交互,autohotkey,Autohotkey,我正在制作一个自动热键脚本,如果满足某些条件,它会关闭一个窗口 起初,我的任务是将其设置为,如果在(比如)5分钟内没有与计算机进行交互,则关闭窗口。AutoHotKey提供了一个变量,用于检查用户是否与计算机进行了任何交互,并且该变量为_TimeIdle。每次用户与计算机交互时,它都会更新为0,然后随着用户不与计算机交互而明显增加 我现在需要的是一个_TimeIdle,但是对于与特定窗口交互的用户,而不是整个计算机。autohotkey是否提供类似的功能?有什么方法可以检查窗口的非活动时间有多长

我正在制作一个自动热键脚本,如果满足某些条件,它会关闭一个窗口

起初,我的任务是将其设置为,如果在(比如)5分钟内没有与计算机进行交互,则关闭窗口。AutoHotKey提供了一个变量,用于检查用户是否与计算机进行了任何交互,并且该变量为_TimeIdle。每次用户与计算机交互时,它都会更新为0,然后随着用户不与计算机交互而明显增加


我现在需要的是一个_TimeIdle,但是对于与特定窗口交互的用户,而不是整个计算机。autohotkey是否提供类似的功能?有什么方法可以检查窗口的非活动时间有多长,类似的吗?

使用IfWinExist命令

也许你不知道窗口是否打开了,所以我建议你插入一个循环,多次尝试

i:=0
while(i < 5){
   IfWinExist, "Title"
   i := i + 1
   Sleep, 200 ;Wait a bit for the next comparison
}
另一个有用的命令是WinWait。您可以在此处查看定义:

IfWinExist:

类似这样的内容:

#Persistent
SetTimer, check_for_window
return

    check_for_window:
IfWinNotExist, ahk_class Notepad
{
    Tooltip
    return
}
IfWinActive, ahk_class Notepad
{
    SetTimer, check_for_window, off
    Tooltip
    WinWaitNotActive, ahk_class Notepad
    SetTimer, time_window_has_been_inactive
}
return

    time_window_has_been_inactive:
Loop 60
{
    Sleep 100
    IfWinActive, ahk_class Notepad
        return
}
SetTimer, time_window_has_been_inactive, off
IfWinExist, ahk_class Notepad
{
    Tooltip, Notepad has been inactive for 6 seconds
    ; do sth
}
SetTimer, check_for_window, on
return
另见: