编写一个简单的 AutoHotkey 脚本(在桌面上每隔 X 秒按一个键)

编写一个简单的 AutoHotkey 脚本(在桌面上每隔 X 秒按一个键)

我需要每 5 分钟或更短时间按一次任何无用的键(例如 F11)来保持窗口处于活动状态(如果它 5 分钟内处于非活动状态,它将锁定)。

但我需要在桌面上按下该键(这样它就不会影响任何打开的窗口)。

我努力了

Loop
{
   ControlSend, {F11}, WindowsApplication1
   Sleep, 100000
}

但似乎不起作用。

谢谢。

答案1

为什么要发送F11到桌面?
如果只是为了保持计算机处于唤醒状态,则可以使用以下脚本:

#SingleInstance, force
#Persistent
SetTimer, NoSleep, 30000
Return

NoSleep:
 DllCall( "SetThreadExecutionState", UInt,0x80000003 )
Return

微软

SetThreadExecutionState 函数
使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入睡眠状态或关闭显示。


还可以模拟鼠标动作来防止系统进入睡眠状态
(如果上述脚本对您不起作用):

Loop {
    Sleep, 30000
    MouseMove, 1, 0, 1, R  ;Move the mouse one pixel to the right
    MouseMove, -1, 0, 1, R ;Move the mouse back one pixel
}

所以实际上没有必要模仿按下一个键

答案2

在之前的评论中,@Rik 提出了一个 AutoHotkey 脚本。它可以工作,但让我提供一个更简单的版本:

#Persistent ; script will stay running after the auto-execute section (top part of the script) completes
#SingleInstance Force ; Replaces the old instance of this script automatically

; https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-setthreadexecutionstate
; 0x80000002 = ES_CONTINUOUS | ES_DISPLAY_REQUIRED
DllCall("SetThreadExecutionState", UInt, 0x80000002)

此脚本将使 Windows 认为正在运行的应用程序不应被屏幕保护程序打断(但您仍可以通过按下默认的 Win+L 组合键手动锁定屏幕)。媒体播放器使用此技术来防止您在观看视频时屏幕关闭。即使公司强制执行的政策不允许您在 Windows 选项中禁用屏幕锁定,此技术仍有效。

相关内容