当计算机一段时间不活动时运行 exe

当计算机一段时间不活动时运行 exe

按照给我的建议这个问题我提出过这个问题。所以我有一个 exe 文件,我想在计算机空闲一段时间后运行(空闲不是指睡眠,而是指不活动或未被使用),比如说 30 分钟。一旦达到“不活动”超时,我希望应用程序运行。假设我的 PC 设置为在电源选项中只有“屏幕睡眠后”选项,没有计算机睡眠,因此除非我使用 Windows+L 键强制执行,否则 PC 不会进入睡眠状态或屏幕锁定屏幕,我想保持这些设置不变。我想检测不活动时间段,一旦达到不活动时间段,我想执行一个 exe 文件。有什么想法可以做到这一点吗?

编辑:

我已按照答案中提供的步骤进行操作:

创建了一个新任务,添加了一个触发器,将其设置为事件:空闲并创建任务。在条件选项卡中,指定任务等待 1 分钟才能变为空闲状态(而不是等待 10 分钟以进行测试)。

但是我等了 10 多分钟,任务从未在 PC1 上触发,而是在另一台 PC2 上触发。我在网上查了一下,发现这PowerCfg -requests会显示是什么阻止了 PC 空闲,当我在 PC2 上运行它时,没有任何结果,但是当我在 PC1 上运行它时,我得到了这个“旧版内核调用程序“ 司机。

所以我使用了Powercfg -requestsoverride,但是当我运行时powercfg -requestsoverride Driver "Legacy Kernel Caller" System,它成功了,我在Powercfg -requestsoverride列表中找到了它,但是powercfg -requests它仍然显示[DRIVER] Legacy Kernel Caller在下面SYSTEM:并且任务从未触发过,请问有什么建议吗?

答案1

你想要的很简单。你可以使用任务计划程序来实现。

创建任务时,在Conditions选项卡下,您可以选择start the task if computer is idle for:。在其中输入您想要的空闲时间。

在此处输入图片描述

只需对您想要运行的 .exe 进行编程,指定运行频率,然后使用空闲条件。

答案2

最简单的解决方案是使用旧的任务计划程序。

任务计划程序不仅允许您在特定时间日期设置任务,而且它实际上还可以在某些事件时设置任务,例如登录时,当然还有空闲时。

创建新任务,添加触发器,将其设置为事件:空闲并创建任务。在条件选项卡中,您可以指定任务等待空闲的时间(您将其设置为 30 分钟)。

此外,您还可以在系统再次启动时通过任务计划程序自动终止任务。

答案3

抱歉,不是用 C#,但很简单。这对于 AutoIt 来说是一项完美的工作:http://autoitscript.com

这是我为您编写的脚本。将其放入 .au3 文件中,将 notepad 替换为您的 exe,并在 Run 中包含完整路径:

#include <Timers.au3>
While 1
   Sleep(10)
   $idleTimer = _Timer_GetIdleTime()
   If $idleTimer > 60000 And Not ProcessExists("notepad.exe") Then
      Run("notepad.exe")
   ElseIf $idleTimer < 10 Then
      ProcessClose("notepad.exe")
   EndIf
WEnd

参考 -https://superuser.com/a/700647/1092861

答案4

您可以使用schtasks命令提示符来简化任务:

schtasks /create /tn "My Task" /tr "EXE Application path" /sc onidle /i Number_Of_Minutes_Inactive

相关内容