Что нового

TimerDiff без TimerInit

RaZum

Знающий
Сообщения
78
Репутация
14
Какой отсчет показывае TimerDiff без предварительной инициализации TimerInit?
Код:
Local $hTimer
MsgBox (0, "", TimerDiff ($hTimer) )
 

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
Возможно показывает сколько работает система...
Код:
#include <GUIConstantsEx.au3>
#include <Date.au3>

Local $hTimer
$sTime=_TicksToTime_Format(Round(TimerDiff($hTimer)/1000)*1000)
MsgBox(4096,'$sTime',$sTime)

Func _TicksToTime_Format($nTicks)
  Local $aTMM[3]
  Return _TicksToTime($nTicks,$aTMM[0],$aTMM[1],$aTMM[2])? StringFormat('%02i:%02i:%02i',$aTMM[0],$aTMM[1],$aTMM[2]): '~'
EndFunc
 

All2khoff

Продвинутый
Сообщения
352
Репутация
65
Предположительно сколько секунд прошло в 12 часовом формате после 11:59:59.
Но вариант Андрея ближе, мой сильно притянут за ухи.

P.S. специально перезагрузил ПК. Вариант Андрея подтвердился.
 

Andrey_A

Продвинутый
Сообщения
325
Репутация
68
Да это оно - это можно увидеть в Диспетчере задач на вкладке "производительность"
Просто _TicksToTime не перебрасывает значение часов в дни...
И есть какое-то отклонение, но это уже к системе или функциям...
 

Вложения

  • 2023-03-03_132708.png
    2023-03-03_132708.png
    14.3 КБ · Просмотры: 8
Последнее редактирование:

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
TimerDiff с нулевым параметром работает примерно как
Код:
_Date_Time_GetTickCount()
 
Автор
R

RaZum

Знающий
Сообщения
78
Репутация
14
У меня отсчет больше на 2 дня чем работает комп. Странный отсчет...
 

Oki

Продвинутый
Сообщения
452
Репутация
62
TimerDiff с нулевым параметром работает примерно как
Код:
_Date_Time_GetTickCount()
И с установленным дескриптором метки времени тоже после 49 дней 17 часов 2 минут 47 секунд 296 миллисекунд (указываю значение времени более точное, чем в справке) будет работать так, словно отсчёт времени только что начался? Или в этом случае используется больше байт под хранение метки времени?
Сообщение автоматически объединено:

49 дней 17 часов 2 минут 47 секунд 296 миллисекунд (указываю значение времени более точное, чем в справке)
Кстати, пришла мне в голову мысль погуглить строку "49 дней 17 часов 2 минут 47 секунд 296 миллисекунд", на что гугол выдал отказ, а вот на английском языке запрос "49 days 17 hours 2 minutes 47 seconds 296 milliseconds" выдал аж две ссылки. Так вот, на одной из этих двух страниц в контексте, отличном от собственно AutoIt, речь шла о том, что отсчёт времени прерывается на время сна. Памятуя о том, что топикстартеру значение показалось странным, выхожу на эксперимент с укладыванием компьютера в сон. Но в нашем контексте аналогичный вывод не подтвердился в результате эксперимента: время отсчитывалось от последней перезагрузки Windows без какого-либо вычета на время укладки в сон. К тому же у топикстартера время получилось на два дня больше, а не меньше.
Сообщение автоматически объединено:

У меня отсчет больше на 2 дня чем работает комп.
А ты со времени запуска Windows сам для себя время считал? или есть шанс, что от момента пробуждения из сна, а система загрузилась на дня раньше?
 
Последнее редактирование:
Автор
R

RaZum

Знающий
Сообщения
78
Репутация
14
именно от загрузки
Специально systeminfo проверил
Сообщение автоматически объединено:

хотя верить systeminfo тоже нельзя, надо самому засекать
Странно, другое.
Дело в том, что отсутствует предупреждение (ошибка), что таймер в коде программы не стартовал, а потому могут быть неконтролируемые ошибки в ходе выполнения кода.
И искать их можно долго, если таймер влияет на основной код косвенно.
Сообщение автоматически объединено:

cmd systeminfo и диспетчер задач видимо берут данные из одного источника, и вводят в заблуждение, и wmic тоже выдаёт что-то далёкое от реального.
Посмотрел логи системы и нашел последнюю загрузку (winlogon, дрова и прочее). Она практически точно совпала с TimerDiff, и отличается на два дня от выше указанных источников.
Видимо TimerDiff показывает основной таймер, который запускается в начале загрузки ОС, и работает до завершения её работы.
К стати, его можно использовать для получения правдивой информации о времени последней загрузки ОС, к тому же сон/гибернация на это время видимо не влияет.
Сообщение автоматически объединено:

Код:
$LastBootUpTime = TimerDiff(0)
 
Последнее редактирование:
Верх