| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Отключить таймер в другой проге |
| Автор: Vetos 6.2.2007, 12:00 | ||
| Моя программа не запускается повторно, т.е. если есть копия. При проверке копии она передаёт ей фокус и отрубается, надо чтоб отключался и таймер только в копии. Знаю что нифига не понятно,но просмотрев код всё становится ясно. Вот код:
Пожалуйсто помогите. Если что не понятно задайте вопрос, я отвечу, просто я не знаю как сформулировать это правильно. Заранее спасибо. |
| Автор: _hunter 6.2.2007, 12:05 |
| самый простой способ заведи ыторой мьютекс и проверяй его при старте. если мюютекс занят -- мы к копии (можно включать таймер) |
| Автор: Vetos 6.2.2007, 12:14 |
| Дело в том что таймер в копии включен, а его нужно выключить из только запущенной копии, и отроубить запущенную копию. Твой вариант я не совсем понял. |
| Автор: Romikgy 6.2.2007, 12:17 |
| а где сам таймер? |
| Автор: Vetos 6.2.2007, 12:25 |
| Сам таймер находиться в модуле. В принципе мне нужно найти в чужой программе компонет TTimer и отрубить его. Просто я не знаю команд для этой операции. |
| Автор: Romikgy 6.2.2007, 12:43 |
| в другой проге( она твоя ксати?) только один таймер или их там много? |
| Автор: Vetos 6.2.2007, 12:53 |
| Прога моя, таймер один, если запускаем её ещё раз то показываем уже запущенную, отрубаем в ней таймер, выходим. Всё реализовано кроме отключения таймера. |
| Автор: Romikgy 6.2.2007, 13:28 |
| я бы сделал через глобальное сообщение, если пришло таймер гасим а так .... найти трудно сам таймер имхо в чужом коде |
| Автор: Vetos 6.2.2007, 13:46 | ||
Прога одна - моя. Это журнал. после регистрации в журнале прога скрывается, включается таймер, по истечению которого прога показывается. При запуске проги повторно, показываем ранее запущенную, отрубаем в ней таймер и выходим. Т.е. при повторном запуске должна появиться уже запущенная, как будто-бы запустилась только-что. Я не знаю команд типа FindWindowEx чтобы убить таймер. Таймер нужно убить в уже запущенной проге. |
| Автор: Romikgy 6.2.2007, 14:19 |
| ничего умнее мне в голову не приходит , написать хук на WM_TIMER и не давать ему хода |
| Автор: _hunter 6.2.2007, 14:50 | ||
значит делай так: запускаемый екземпляр проверяет мьютекс (тот, что у тебя есть) и если он занят -- устанавливает событие (CreateEvent...) . в таймере проверяй наличие этого события. если оно есть -- выполняй KillTimer для себя же. все... |
| Автор: RA 6.2.2007, 23:50 | ||
| Для этого есть функция KillTimer Эта функция по заголовку программы убьёт все таймеры, но только в приложении на Delphi
|
| Автор: Romikgy 6.2.2007, 23:58 |
на это интересно посмотреть подразумеваю по хистенсу сортировка имхо достаточно и application.handle |
| Автор: RA 7.2.2007, 14:34 | ||
| Romikgy, Дык речь идёт о чужом приложении как я понял Добавлено @ 14:36
|
| Автор: Romikgy 7.2.2007, 14:45 |
да |
| Автор: Gudzon 8.2.2007, 07:59 | ||
Я предлогаю действовать чере handle, добраться через хендл окна до таймера и отрубить его.
|
| Автор: Rennigth 8.2.2007, 10:45 | ||
| Gudzon, Ты не перестаешь меня удивлять... Объясни, что ты вот этим:
хотел показать? |