已解决 如何根据inputbox 输入启动时间,启动目标运行程序
本帖最后由 itzyx 于 2020-8-9 12:39 编辑Local $rt = InputBox("预约","请输入测试物品的启动时间")
#include <Date.au3>
#include <MsgBoxConstants.au3>
;定时功能主程序==============================================================
Local $iDateCalc = -1 ;设定初值,进入循环和判断
While $iDateCalc < 0 ;判断设定时间是否到达
Local $iDateCalc = _DateDiff('n', "$rt", _NowCalc()) ;获取当前时间,并计算当前时间与设定时间的差值
WEnd
Sleep(1000)
Run("C:\Program Files (x86)\?\?.exe");到达设定时间点打开软件
请各位大佬,帮忙纠正一下,哪里有问题 用WINDOWS任务计划。
862228699 发表于 2020-8-7 16:04
用WINDOWS任务计划。
因为我才学没几天,不太懂怎么引用WINDOWS任务计划 ,能麻烦指定清楚一下吗?万分感谢!
862228699 发表于 2020-8-7 16:21
大佬你推荐的WINDOWS任务计划我看了一下确实可行,但是能不能通过编写脚本,更便捷的预订启动的时间, 上面写的脚本,时间设置固定值是可以运行的,但是设置成根据inputbox 输入的变量 $rt ,就不可行了,软件会立马启动,不会按照设置的时间启动。 本帖最后由 afan 于 2020-8-7 18:25 编辑
#include <Date.au3>
Local $sTimes = InputBox('预约', '请输入测试物品的启动时间(时分秒)')
If @error Then Exit
Local $aTimes = StringRegExp($sTimes, '(\d\d?)\D+(\d\d?)\D+(\d\d?)', 1) ;带分隔符3段时间
If @error Then
$aTimes = StringRegExp($sTimes, '(\d\d)(\d\d)(\d\d)', 1) ;不带分隔符6位数时间
If @error Then Exit MsgBox(48, '', '时间格式错误')
EndIf
If $aTimes = '' Then $aTimes = '00'
$sTimes = StringFormat('%s/%s/%s %s:%s:%s', @YEAR, @MON, @MDAY, $aTimes, $aTimes, $aTimes)
Local $iDateCalc = _DateDiff('s', _NowCalc(), $sTimes) ;获取当前时间,并计算当前时间与设定时间的差值
Local $iTs = TimerInit()
If $iDateCalc > 10 Then Sleep(($iDateCalc - 10) * 1000)
Do
Sleep(250)
Until TimerDiff($iTs) >= $iDateCalc * 1000
MsgBox(0, $sTimes, '时间到')
;~ Run('C:\Program Files (x86)\?\?.exe') ;到达设定时间点打开软件 afan 发表于 2020-8-7 18:05
:face (36):感谢大佬, 我写的问题找到了,是因为自定义的函数 加了双引号,不过你这个更完善,更好,厉害厉害
页:
[1]