Что нового

[Время, дата] Простой таймер

Hiki

Новичок
Сообщения
27
Репутация
1
Приветствую и прошу помощи.
Скрипт ниже - таймер, висит в трее и считает время, иногда начало отсчета мне нужно сбросить на 0, для этого есть пункт в меню.
Прошедшее от начала отсчета время выводится в ToolTip рядом с треем на панели задач.
Метка начала отсчета возвращенная TimerInit пишется не в переменную, а в файл, потому что она мне нужна и после перезагрузки компа.
Скрипт работает так как мне нужно пока включен комп, а после перезагрузки неправильно. И я кажется понял причину: TimerInit пишет метку времени от начала работы компа, а не от системного времени.
Помогите разобраться как сделать так, чтобы метка начала отсчета таймера в файле не зависела от перезагрузки компа.
Возможно TimerInit вообще не подходит для моих целей, тогда что?

PS. Я автоит только начал изучать, это один из первых скриптов, навыков программирования не имею.

Код:
#RequireAdmin
#include <Constants.au3>
#include <Date.au3>

Global $time, $h, $m, $s, $file

Opt('TrayAutoPause', 0)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 2)
TraySetIcon('shell32.dll', -266)
TrayCreateItem('Reset')
TrayItemSetOnEvent(-1, 'reset')

While 1
$file=FileOpen(@ScriptDir &'\t', 0)
$time=FileRead($file)
FileClose($file)
_TicksToTime(Int(TimerDiff($time)), $h, $m, $s)
ToolTip(StringFormat('%02i:%02i', $h, $m), 1400, 1026)
Sleep(60000)
WEnd

Func reset()
$file=FileOpen(@ScriptDir &'\t', 2)
FileWrite($file, TimerInit())
FileClose($file)
EndFunc
 

hedji

Продвинутый
Сообщения
408
Репутация
91
Код:
#include <Date.au3>
FileWrite("D:\Scripts\1.txt", _NowCalc())
Sleep(5000)
$starttime = FileRead("D:\Scripts\1.txt")
$runtime = _DateDiff('s', $starttime, _NowCalc())
ConsoleWrite($runtime)
 
Автор
H

Hiki

Новичок
Сообщения
27
Репутация
1
hedji, благодарю за наводку, не знал про эти функции.
Вот окончательный вариант, все работает как надо.
Код:
#include <Date.au3>
Global $h, $m, $s, $t
Opt('TrayAutoPause', 0)
Opt('TrayOnEventMode', 1)
Opt('TrayMenuMode', 2)
TraySetIcon('shell32.dll', -266)
TrayCreateItem('Reset')
TrayItemSetOnEvent(-1, 'reset')

While 1
_TicksToTime(Int(_DateDiff('s', FileRead('t'), _NowCalc())*1000), $h, $m, $s)
ToolTip(StringFormat('%02i:%02i', $h, $m), 1400, 1026)
Sleep(60000)
WEnd

Func reset()
$t=FileOpen('t', 2)
FileWrite($t, _NowCalc())
FileClose($t)
EndFunc
 
Верх