Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Ловушка.

Кто мне расскажет как сделать ловушку для таймера?
У меня есть шароварная прога которая через час работы отрубается. Я так подозреваю,
что час она отмеряет с помощью виндовского таймера (а как ещё?). Как бы мне перехватить
сообщение от таймера и убить его?

P.s.: На любом языке поддерживающем вин апи.
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Кузьмин Олег Wed, 7 Jan 2004 00:18:59 +0500 (#48097)

 

Ответы:

Здравствуйте !

Ни за что бы не стал отмерять время с помощью таймера - ломается
на раз.
Для начала надо выяснить то, действительно ли программа по таймеру
время отмеряет - берете Spy из комплекта Visual Studio - и вперед -
инспектируете все окна программы. Но скорее всего ничего не добьетесь.
Потому что может программа не сообщения ловит от таймера, а подсунула
в SetTimer указатель на функцию обратного вызова.
В любом случае таймер убивается при помощи KillTimer - API функции.
Навряд ли вам так повезет и защита так проста.
Может, программа получает системмное время + через GetTickCount,
а может через QueryPerformanceCounter + QueryPerformanceFrequency
или делает что то типа :

__int64 MyQueryCounter(void)
{
_asm _emit 0x0F
_asm _emit 0x31
}

это запись инструкции RDTSC псевдокомандами.

Перехватить - сделав глобальный хук на постановку сообщения в очередь.
Убить - просто не пропустить его в очередь. Кстати, в курсе, что ListCtrl
тоже пользуется таймером, обновление тулбаров в MFC - тоже на таймерах, и
еще много чего. Так что тут - главное не перехватить, а выделить нужный.

--
С уважением, Вахтуров Виктор.
Информационный сайт для программистов http://SoftMaker.com.ru
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Wed, 7 Jan 2004 02:57:05 +0300 (#48141)

 

Здравствуйте, Кузьмин.

Вы писали 6 января 2004 г., 22:18:59:

подозреваю,

перехватить

Дебуггером найди главный цикл обработки сообщений и для сообщения
таймера отбей одну из процедур выполняющуюся при его поступлении
(экспериментально это быстрее чем раскручивать код)
З.Ы. че за прога?

Ответить   Fri, 9 Jan 2004 19:57:37 +0300 (#50658)

 

Доброго времени суток, Кузьмин.

Вы писали 6 января 2004 г., 22:18:59:

подозреваю

перехватить

Ну насчет таймера, и отмеряния времени: - время можно отмерять по
разному, и совершенно необязательно прибегать к помощи SYS_TIMER.
Можно воспользываться функциями взятия системного, локального,
мультимедийного времени.
Так что советую дебагером поставить бряки на функции GetSystemTime,
GetLocalTime, GetTickCount и timeGetTime, посмотреть(если хоть одна
используется) куда она что кладет, и не дать ей это сделать. В
принципе в комплект VC6,7 входит замечательнейшая програмка для всяких
там хаков и пр. Называется она depends, а служит для показа внешних
(подключаемых из ДЛЛ) функций, с которыми какая-либо прога работает.
А если учесть, что весь АПИ подлючается из ДЛЛ, то очень быстро
вычисляется нужная функция.
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

-*Информационный канал Subscribe.Ru
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru

http://subscribe.ru/ mailto:ask@subscribe.ru

Ответить   Havoc Sat, 10 Jan 2004 00:52:51 +0300 (#50828)