![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| 3D-Dragon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 7.1.2003 Где: Днепропетровск, U A Репутация: нет Всего: нет |
Вот возник такой вопрос.
По каким параметрам (может быть в реестре, системным файлам или другим способом) можно узнать когда в последний раз выключался или перезагружался компьютер ? Мне нужно отслеживать изменение системного времени. При запущенной проге вопросов не возникает так как все действия пользователя логируются. Но при закрытии программы контроль естественно пропадает Может есть готовые решения ? Буду признателен за любые конструктивные ответы. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Смотри GetTickCount. Если я правильно помню то эта функция возвращает количество мл. секунд, прошедших с перезапуска ОС.
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| 3D-Dragon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 7.1.2003 Где: Днепропетровск, U A Репутация: нет Всего: нет |
Это я знаю Мне нужен не период времени, прошедший с момента старта компа, а время последнего выключения или перезагрузки. Пример 1 Компьютер ресетнули. Мне нужна дата когда это сделали: 23.07.2003 14:40:32 Пример 2 Компьютер выключили и потом включили через какой-то промежуток времени Мне нужна дата типа: Последний раз компьютер выключали: 23.07.2003 16:25:38 |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Лови сообщение WM_QUERYENDSESSION (вроде так) и веди логи(например, записывай данные в файл или в реестр). Только данный метод сканает, если корректно завершать работу
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| 3D-Dragon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 7.1.2003 Где: Днепропетровск, U A Репутация: нет Всего: нет |
<Spawn>
Как же мне его ловить, если мою прогу закроют ? |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Если твою прогу в ручную закроют тогда обычного OnCloseQuery хвати, если же комп будут, например, перезагружать, то лови WM_QUERYENDSESSION(оно должно посылаться всем приложениям перед перезагрузкой/завершением работы). Разумеется, если только вы не Reset-ом выключаете комп
-------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
В любом случае тебе нужно сделать программу, следящую за состоянием ОС на протяжении работы с компом
Это сообщение отредактировал(а) <Spawn> - 24.7.2003, 07:08 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| PostEr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 30.6.2003 Где: Самара Репутация: нет Всего: 1 |
Типа резидент такой ;0) А винда какая? Может если под 98, то что-нибудь в досе придумать? в автоекзеке? А так... А если в атозагрузку помещать ярлык на твою прогу. Но только с ключом каким-нибудь, то есть чтобы она свёрнута была и не видна . Считается время запуска проги и т.д. и т.п., а если запускается непосредственно сама прога, то она находит экземпляр твоей проги, но уже запущенный и там что-нибудь такое
-------------------- ------------------------------------------------------------------ [email protected] До востребования |
|||
|
||||
| 3D-Dragon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 7.1.2003 Где: Днепропетровск, U A Репутация: нет Всего: нет |
PostEr
В том то и проблема, что прога должна быть всеядной |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Может быть посмотреть дату каких-нибудь логов ? Бывают логи, которые не затираются, а переименовываются: bootlog.txt -> bootlog.prv.
Или же смотреть не логи, а вообще какие нибудь системные файлы ? Интересно, как винда узнает, что в прошлый раз она не завершила свою работу - тогда при загрузке запускается scandisk. Т.е. где-то хранится флаг нормального завершения работы, может быть там хранится и другая инфа (например, дата завершения) ? -------------------- С уважением, г-н Посол. |
|||
|
||||
| &-ray |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 406 Регистрация: 15.4.2003 Где: Казахстан, г Аста на Репутация: нет Всего: нет |
Можно например поэкспериментировать с каким-нить ревизором диска, создать образ диска, затем перезагрузиться и проверить какие файлы были изменены при перезагрузке. Глядишь, найдешь какие-нить записи. -------------------- "Совсем неважно от чего помрешь, ведь куда важнее - для чего родился..." С.Б. -------------------- И снова мышь беру я в руки Куда иду? - Конечно в сруки! |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 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, а потом уже смотри соответствующие файлы. Но по-моему лучше сделать прогу, работающую в фоне, которая время от времени (например, каждую минуту или час), писала бы в реестр или в файл текущее время/дату - комп это тормозить нисколько не будет. Тогда ты сможешь узнать время завершения даже если винда не завершила свою работу по-нормальному. -------------------- С уважением, г-н Посол. |
|||
|
||||
| 3D-Dragon |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 7.1.2003 Где: Днепропетровск, U A Репутация: нет Всего: нет |
p0s0l
Спасибо ! Буду 'рыть' в подсказанную сторону |
|||
|
||||
| ZShell |
|
|||
|
Unregistered |
На самом-то деле, если тебе надо получить момент ВЫКЛЮЧЕНИЯ (а не последующего включения через неделю), причем возможно аварийного, то тут надо постоянно висеть в памяти и писать флаг-файл, скажем, каждые пол-минуты.
Потом - хрясь - РЕСЕТ! Загружаемся, читаем время создания файла. Осталось додумать, как не переписывать флаг при начальной загрузке... |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |