Запуск ежедневного задания через Window Task Scheduler с условием доступа в интернет - PullRequest
0 голосов
/ 24 мая 2019

Я хочу, чтобы задача (авто-горячая клавиша) выполнялась ежедневно в определенное время при условии, что на моем ноутбуке есть доступ к Интернету - так же как и для открытия веб-сайта. Если нет доступа к Интернету, запустите задачу, как только она станет доступной. При использовании планировщика заданий Windows для этого условия нет явных настроек. Может быть, есть способ создать пользовательский триггер событий, который проверяет подключение к интернету?

Я не смог найти ничего об этом в Интернете, несмотря на то, что мое требование было довольно простым для запланированного задания?

Параметр «Запускать только при наличии следующего сетевого подключения: любое подключение» на вкладке условий моей задачи не работает. Я был в автономном режиме в самолете, и задача все еще сработала. Вероятно, он обнаруживает мои сетевые адаптеры Hyper-V "vEthernet", и, следовательно, условие выполняется. Я также не хочу устанавливать определенную сеть Wi-Fi там, поскольку я мог бы быть дома или в универе, когда задача запускается. Пока триггером для моей задачи являются системные часы.

1 Ответ

0 голосов
/ 24 мая 2019

Вы уже пробовали что-нибудь в AutoHotkey?Я бы порекомендовал опубликовать ваш код, если у вас есть или попытаться сначала.Вообще говоря, мы не будем писать ваш код для вас, но мы с радостью поможем с конкретными проблемами или проблемами.

Чтобы начать, я бы рекомендовал использовать SetTimer , чтобы регулярно проверять, чтоВремя пришло.После того, как оно соответствует желаемому времени, деактивируйте таймер и проверьте, подключен ли он к Интернету (см. Ниже).Если подключено, выполните задание (я), о котором вы упомянули, и повторно активируйте таймерЕсли это не так, продолжайте перепроверять каждые 30 секунд.(или все, что вы хотите), пока не подключите.

Проверка интернет-соединения не так проста, но вот упрощенный пример того, что я иногда использую.

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
}
...