Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить время последнего Restart-Shutdown ? 
:(
    Опции темы
3D-Dragon
  Дата 23.7.2003, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A

Репутация: нет
Всего: нет



Вот возник такой вопрос.
По каким параметрам (может быть в реестре, системным файлам или другим способом) можно узнать когда в последний раз выключался или перезагружался компьютер ?

Мне нужно отслеживать изменение системного времени.
При запущенной проге вопросов не возникает так как все действия пользователя логируются.
Но при закрытии программы контроль естественно пропадает sad.gif

Может есть готовые решения ?
Буду признателен за любые конструктивные ответы.
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 23.7.2003, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Смотри GetTickCount. Если я правильно помню то эта функция возвращает количество мл. секунд, прошедших с перезапуска ОС.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
3D-Dragon
Дата 23.7.2003, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A

Репутация: нет
Всего: нет



Цитата
Смотри GetTickCount. Если я правильно помню то эта функция возвращает количество мл. секунд, прошедших с перезапуска ОС.

Это я знаю smile.gif

Мне нужен не период времени, прошедший с момента старта компа, а время последнего выключения или перезагрузки.

Пример 1
Компьютер ресетнули.
Мне нужна дата когда это сделали: 23.07.2003 14:40:32

Пример 2
Компьютер выключили и потом включили через какой-то промежуток времени
Мне нужна дата типа:
Последний раз компьютер выключали: 23.07.2003 16:25:38
PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 23.7.2003, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Лови сообщение WM_QUERYENDSESSION (вроде так) и веди логи(например, записывай данные в файл или в реестр). Только данный метод сканает, если корректно завершать работу smile.gif


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
3D-Dragon
Дата 24.7.2003, 04:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A

Репутация: нет
Всего: нет



<Spawn>
Цитата
Лови сообщение WM_QUERYENDSESSION

Как же мне его ловить, если мою прогу закроют ?

PM MAIL WWW ICQ   Вверх
<Spawn>
Дата 24.7.2003, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



Если твою прогу в ручную закроют тогда обычного OnCloseQuery хвати, если же комп будут, например, перезагружать, то лови WM_QUERYENDSESSION(оно должно посылаться всем приложениям перед перезагрузкой/завершением работы). Разумеется, если только вы не Reset-ом выключаете комп smile.gif))))


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
<Spawn>
Дата 24.7.2003, 07:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


Профиль
Группа: Экс. модератор
Сообщений: 2776
Регистрация: 29.1.2003
Где: Екатеринбург

Репутация: 44
Всего: 64



В любом случае тебе нужно сделать программу, следящую за состоянием ОС на протяжении работы с компом

Это сообщение отредактировал(а) <Spawn> - 24.7.2003, 07:08


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
PostEr
Дата 24.7.2003, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 30.6.2003
Где: Самара

Репутация: нет
Всего: 1



Типа резидент такой ;0) А винда какая? Может если под 98, то что-нибудь в досе придумать? в автоекзеке? А так... А если в атозагрузку помещать ярлык на твою прогу. Но только с ключом каким-нибудь, то есть чтобы она свёрнута была и не видна . Считается время запуска проги и т.д. и т.п., а если запускается непосредственно сама прога, то она находит экземпляр твоей проги, но уже запущенный и там что-нибудь такое smile.gif Ну типа наоборот только. Свёрнутая прога всегда ждёт запуска своего второго экземпляра...


--------------------

------------------------------------------------------------------

[email protected]
До востребования

PM MAIL WWW ICQ   Вверх
3D-Dragon
Дата 24.7.2003, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A

Репутация: нет
Всего: нет



PostEr
Цитата
А винда какая?

В том то и проблема, что прога должна быть всеядной smile.gif
PM MAIL WWW ICQ   Вверх
p0s0l
Дата 24.7.2003, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Может быть посмотреть дату каких-нибудь логов ? Бывают логи, которые не затираются, а переименовываются: bootlog.txt -> bootlog.prv.
Или же смотреть не логи, а вообще какие нибудь системные файлы ?

Интересно, как винда узнает, что в прошлый раз она не завершила свою работу - тогда при загрузке запускается scandisk. Т.е. где-то хранится флаг нормального завершения работы, может быть там хранится и другая инфа (например, дата завершения) ?



--------------------
С уважением, г-н Посол.
PM   Вверх
&-ray
Дата 24.7.2003, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 406
Регистрация: 15.4.2003
Где: Казахстан, г Аста на

Репутация: нет
Всего: нет



Цитата
Интересно, как винда узнает, что в прошлый раз она не завершила свою работу - тогда при загрузке запускается scandisk. Т.е. где-то хранится флаг нормального завершения работы, может быть там хранится и другая инфа (например, дата завершения) ?

Можно например поэкспериментировать с каким-нить ревизором диска, создать образ диска, затем перезагрузиться и проверить какие файлы были изменены при перезагрузке. Глядишь, найдешь какие-нить записи.


--------------------
"Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б.

--------------------
И снова мышь беру я в руки
Куда иду? - Конечно в сруки!
PM MAIL WWW   Вверх
p0s0l
Дата 24.7.2003, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Я сделал снимок реестра до перезагрузки и после. Дофига изменений, но ничего подозрительного
я не нашел.

Потом выключил комп на 5 минут (чтоб время завершения отличалось от времени загрузки винды),
загрузил винду и посмотрел какие файлы имеют время модификации на тот момет, когда я выключал комп:

C:\WINDOWS\system32\config\DEFAULT
C:\WINDOWS\system32\config\SAM
C:\WINDOWS\system32\config\SECURITY
C:\WINDOWS\system32\config\SOFTWARE
C:\WINDOWS\system32\config\SYSTEM
C:\WINDOWS\system32\config\SysEvent.Evt

и некоторые другие (уже сомнительные) файлы. Но на эти файлы можно с уверенностью опираться. Без первых пяти винда не будет работать вообще.

У меня XP, в других нет возможности посмотреть. Под 2k должно быть также.
А в 9x - 100% не так. Так что посмотри таким же способом в 9x и в своей проге вначале определяй версию Windows, а потом уже смотри соответствующие файлы.

Но по-моему лучше сделать прогу, работающую в фоне, которая время от времени (например,
каждую минуту или час), писала бы в реестр или в файл текущее время/дату - комп это тормозить нисколько не будет.
Тогда ты сможешь узнать время завершения даже если винда не завершила свою работу по-нормальному.



--------------------
С уважением, г-н Посол.
PM   Вверх
3D-Dragon
Дата 25.7.2003, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.1.2003
Где: Днепропетровск, U A

Репутация: нет
Всего: нет



p0s0l
Спасибо !
Буду 'рыть' в подсказанную сторону smile.gif
PM MAIL WWW ICQ   Вверх
ZShell
Дата 27.7.2003, 02:01 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











На самом-то деле, если тебе надо получить момент ВЫКЛЮЧЕНИЯ (а не последующего включения через неделю), причем возможно аварийного, то тут надо постоянно висеть в памяти и писать флаг-файл, скажем, каждые пол-минуты.
Потом - хрясь - РЕСЕТ! Загружаемся, читаем время создания файла. Осталось додумать, как не переписывать флаг при начальной загрузке...
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0565 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.