Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Как закрыть программу по времени.


Автор: adminvoz 14.6.2005, 14:29
Есть такая проблема: Нужно переодически (по времени) закрывать программу на компьютерах юзеров, да бы они не забывали её выключать перед уходом. Проблема в том что программа перед закрытием спрашивает да или нет (Выйти). Останавливать программу закрытием процесса в таск менеджере нельзя. Как реализовать закрытие программы по времени и авто ответом в доп. окне "Да" и эмуляцией нажатия кнопки мыши?

Заранее благодарен за ЛЮБЫЕ советы в этой области!

Автор: Mayk 14.6.2005, 14:38
Вариант, не отличающийся изяществом:
1) Получаем (опытным путем, через скриншот) координаты кнпоки "ДА"
2) Используя WindowFromPoint получаем HANDLE окна вопроса
3) Посылаем через SendMessage WM_LBUTTONDOWN полученному хэндлу по известным координатам.
4) Через некоторое время(для порядка) посылаем WM_LBUTTONUP.



Автор: Дрон 14.6.2005, 14:41
А может не обязательно клик мышки имитировать... Может проще послать нажатие кнопки Enter (если там отфет Да по умолчанию)?

Автор: Ignat 14.6.2005, 14:49
Цитата
если там отфет Да по умолчанию

А если нет, то TAB, затем ENTER smile

Автор: III.nfo 14.6.2005, 16:34
Извините, а так ли надо именно эмулировать нажатие,?
Нельзя ли просто вызвать соответствующую функцию?

Автор: Mayk 14.6.2005, 16:39
Если воспользоваться соответствующей функцией, то
либо выскочет окошко "Вы уверены, что хотите выйти"
либо убивать нельзя по условию

Автор: vadims 14.6.2005, 22:51

Под Win - не могу вспомнить функцию, но есть такая - эмулировать нажатие клавиши.
Поищи слова типа SendKey, PressKey, ...VirtualKey - вообщем вокруг 'Key'.
Опять же через SendMsg реально симитировать почти все

Под DOS (в принципе если постараться можно и под Win) - через bios зашвырнуть код клавиши
в буфер клавиатуры - для этого в Borlande например существует функция bioskey, а можно и
напрямую через int 10h.


Там уж выбирай - толи тебе ENTER эмулировать, толи hot-key для клавиши 'Да' (наверняка же есть)


Я конечно не знаю реальной ситуации, но 'разные пути ведут к одной и той же цели'
1. если программа 'самописная' я бы нашел разработчика и за бутылку пива заставил бы его ввести
опцию - 'отвалиться без вопросов'
2. если она более или менее 'продвинутая' - наверняка есть язык макросов

А вообще-то чтобы присоветовать что-то более внятное надо получить ответ на вопрос:
А что за программу то закрыть надо ???
В какой конкретно среде среде она функционирует ???
И что вообще за проблема - пользователь забыл выключить компьютер ??? Забыл и забыл.
Она что - если 10 мин нет нажатия на клавиши начинает низкоуровневое форматирование ???

Кстати очень правильно заметил Mayk, что если она спрашивает надо ли выйти то значит
'кому-то это надо' - если безусловно глушить процесс, наверняка можно что-то потерять

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)