运行 通过 Window Task Scheduler 完成的每日任务,需要联网

Running a daily task via Window Task Scheduler with condition of internet access

我想要一个 AutoHotkey 任务 运行 在我的笔记本可以上网的情况下每天的特定时间,因为它需要打开一个网站。如果无法访问 Internet,运行 任务可用后立即执行。使用 Windows Task Scheduler,没有针对此条件的明显设置。也许有一种方法可以构建一个检查互联网连接的自定义事件触发器?

尽管我的要求对于计划任务来说非常基本,但我在互联网上找不到任何相关信息。

我的任务的“条件”选项卡中的“仅在以下网络连接可用时启动:任何连接”选项不起作用。我在飞行模式下离线,任务仍然触发。可能它检测到我的 Hyper-V 网络适配器“vEthernet”,因此条件为真。我也不想在那里设置特定的 WiFi 网络,因为当任务被触发时我可能在家里或在大学。到目前为止,我的任务的触发器是系统时钟。

您在 AutoHotkey 中尝试过任何东西吗?如果您有或首先尝试,我建议您发布您的代码。一般来说,我们不会为您编写代码,但我们很乐意帮助您解决具体问题。

为了帮助您入门,我建议您使用 SetTimer 定期检查现在几点。一旦它与您想要的时间相匹配,停用计时器并检查是否已连接到互联网(见下文)。如果已连接,请执行您提到的任务并重新激活计时器。如果不是,请每 30 秒重新检查一次。 (或任何你想要的)直到连接。

检查 Internet 连接不像 straight-forward 那样,但这是我偶尔使用的简化示例。

f1::
If NetChk( "https://www.google.com" )
    MsgBox , Success!
Else
    MsgBox , Nope... :(
Return

NetChk( sAddress )
{
    ComObjError( false )
    oWHR := ComObjCreate( "WinHttp.WinHttpRequest.5.1" )
    oWHR.Open( "GET" , sAddress )
    oWHR.Send()
    Return oWHR.ResponseText
}