![]() |
Закрыть незакрываймое окно!
Здравствуйте!
Недавно снова установил Alcohol 120%. Мне стало интересно как закрыть окно приветствия в нем, то которое типо "О программе" и висит 10 секунд? Как я выяснил окно это - дочернее и пока не пройдет счетчик (10 секунд ожидания) окно не закроется. Попробовал написать так: Код:
PostMessage(FindWindow(nil, 'О программе - Alcohol 120%'), wm_quit, 0, 0); Что можете посоветовать? Отдельная просьба не высказывать предложения по установке креков и покупки лицензии на Alcohol 120%! Я не собираюсь ломать Alcohol 120% (меня устраивает 15-дневный пробный период) мне это нужно как полигон для обучения! Заранее благодарен!!! |
D@n1k007, PostMessage в альянсе с параметром wm_quit как раз и отправляют процессу, а не отдельно взятому окну, команду закончить работу.
Данное ПО не установлено, так что не проверял. А что если отправить сообщение одноимённой функцией SendMessage с параметром WM_CLOSE? SendMessage(FindWindow(nil, 'О программе - Alcohol 120%'), WM_CLOSE, 0, 0) |
или просто спрятать его:
ShowWindow(FindWindow(nil, 'О программе - Alcohol 120%'), SW_HIDE); |
Код:
SendMessage(FindWindow(nil, 'О программе - Alcohol 120%'), WM_CLOSE, 0, 0); Код:
ShowWindow(FindWindow(nil, 'О программе - Alcohol 120%'), SW_HIDE); Вот блин головоломку придумал :( |
D@n1k007, закрыть окно не выйдет, потому что таймер соравно будет работать. Копать нужно именно в сторону таймера. Побороть таймер=побороть окно.
|
Цитата:
|
Вложений: 3
2 El Scorpio
Звучит нелепо, но смыл не в том чтобы пользоваться Alcohol :blush2:, смысл в том чтобы закрыть это окно! :) Я же писал выше Цитата:
Код:
var h1, h2: hwnd; Что я делаю не так? (Пробовал с другим приложением тоже не смог найти кнопку) Прилагаю картинки! |
1) А сначала TPanel если поискать (а на нём TButton)?
2) Победил таймер? ничё у тебя оперативки то! hypernate.sys наверное половину загрузочного раздела занимает :) |
Цитата:
Глядишь, что-нибудь интересное найдётся. |
Сейчас расскажу суть моей идеи:
Я хотел с помощью кода, приведенного ниже, активировать кнопку ОК, в надежде что нажав на нее окно закроется, но увы... Кнопка стала активной, окно не закрылось! :( Код:
begin Цитата:
2 ALL 1. Как победить таймер? Как его можно поставить в значение 0? Может есть какие-то свойства/сообщения/доп. параметры для команды WM_TIMER (вообще уместно ли ее тут использовать)? 2. Можно ли узнать сообщение которое кнопка ОК посылает окну? |
кнопка посылает WM_COMMAND: wparam=ID, lparam=hwnd. Дальше первый поймавший сообщение находит у приславшего указатель на TControl и отправляет ему обратно сообщение CM_COMMAND ( = 0x3000 + WM_COMMAND), которое и обрабатывается самой же кнопкой (её обёрткой VCL).
Скорее всего таймер использует сообщение WM_TIMER. Если при этом для вычисления оставшегося кол-ва секунд используется формула GetTickCount() - start_time (а таймер только для обновления экрана), то фокус не прокатит. Если используется аргумент wparam сообщения WM_TIMER, то достаточно один раз послать WM_TIMER с wparam=GetTickCount()+8000. Если сообщение таймера используется для увеличения счётчика (на единицу), значит надо послать сколько нужно раз это сообщение. Ещё можно изменить период таймера функцией SetTimer. В любом случае понадобится ID таймера и параметр lparam, который он использует, а их можно узнать только поймав "родное" сообщение WM_TIMER. |
Время: 20:32. |
Время: 20:32.
© OSzone.net 2001-