| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Неисчезающее окно летающее за курсором |
| Автор: Igor_thief 29.4.2007, 19:19 | ||
| Hello. Пишу программу в которой надо, чтобы одно окно было всегда активным (не только в приделах приложения, но и в приделах системы) и "летало" за курсором. Добился этого выполняя следующие действия в таймере:
Вопрос состоит в том, оптимальный ли это способ? Надо ли добавить какие-то проверки для того чтобы не выполнять в каждой итерации операции SetForegroundWindow(Handle);? Есть ли предложения более оптимального подхода? ПС: нет, я не пишу назойливый вирус; если сильно интерессно зачем это, то сразу скажу - лупа |
| Автор: anwe 29.4.2007, 20:06 | ||
Сделай свое окно HWND_TOPMOST |
| Автор: ama_kid 3.5.2007, 06:40 |
| Такие вещи правильнее делать не в таймере, а отлавливать события мыши с помощью глобального хука http://msdn2.microsoft.com/en-us/library/ms644959.aspx#wh_mouse_llhook А зачем тебе передавать постоянно фокус твоему окну? Этим ты отбираешь его у других элементов системы... Имхо, неправильно и "пользователи могут быть недовольны".... |
| Автор: Yanis 3.5.2007, 06:46 |
| Интересно как это выглядит на экране -- «летающее окно». |
| Автор: Igor_thief 3.5.2007, 17:03 | ||||
Дело в том, что была и такая идея. Может потом и переделаю под такой способ.
Да, я понимаю. Просто для того чтобы отключить мое окошко достаточно нажать Esc. Вот для того чтобы поймать этот Esc мне и надо чтобы фокус принадлежал моему окну. Хотя, я уже чувствую, что скоро последует совет типа - добавь хук на перехват Esc. Ну вы же эксперт! Напрягите воображение. Не верится мне чтобы человек с таким статусом никогда не видел экранную лупу Ну что ж, судя по ответам, я все сделал оптимально. |
| Автор: Yanis 3.5.2007, 18:48 | ||
Ну просто бысло интересно что за проект пишется |