![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Фокус на свое приложение
Igoryano © (2004-09-07 12:14:00)Задача такая: Есть приложение, необходимо чтобы его форма была всегда в фокусе. На форме есть таймер на событие его изменение я и хочу поставить проверку что сейчас активно. Грубо говоря чтоб пользователь даже на рабочий стол не мог переключиться. Get/SetActiveWindow не помогает, т.к. действует в пределах своего приложения.
DVM (2004-09-08 13:58:00) [1]
> Как перехватить сообщение о потере фокуса?
WM_ACTIVATE, WM_FOCUS помогут отследить потерю фокуса.
> и собственно как вернуть собственно фокус?
[1] + SetFocus
Igoryano (2004-09-08 13:24:00) [2]Как перехватить сообщение о потере фокуса? и собственно как вернуть собственно фокус?
DVM (2004-09-08 11:56:00) [3]
> Не работает видимо тоже распространяется только на свое
> приложение.
Дело не в этом. В Microsoft решили, что это плохо, когда неизвестно какое приложение вдруг выскакивает из ниоткуда и забирает клавиатурный фокус себе. Поэтому в Win2000 и выше поведение некоторых функций изменили. В частности SetForegroundWindow (). Хотя MS вовсю злоупотребляет захватом фокуса в своих программах.
Проще всего это использовать то, что я уже написал в 1.
Есть другой способ, но он сложнее.
Igoryano (2004-09-08 10:53:00) [4]Не работает видимо тоже распространяется только на свое приложение.
DeadMeat (2004-09-07 18:05:00) [5]SetForegroundWindow ()...
---
...Death Is Only The Begining...
Igoryano (2004-09-07 13:47:00) [6]У меня XP. Свободно переключаю на любое другое приложение.
Igoryano (2004-09-07 13:45:00) [7]Так не работает
Multy (2004-09-07 13:45:00) [8]По XP вроде работает, а как сделать чтобы работало всегда?
DVM (2004-09-07 13:37:00) [9]
> Multy (07.09.04 13:32) [3]
Под Win2000 и выше не будет работать в 100% случаях.
Multy (2004-09-07 13:32:00) [10]Можно например так:
Var H: HWND;
H := FindWindow(nil, 'My Progect');
BringWindowToTop(H);
Причём из любого приложения
Igoryano (2004-09-07 13:09:00) [11]таймер нужен для реализации функцианалы этой проги, на что вешать мне пох. Напишите код как перехватить сообщение и как установить обратно фокус на мое приложение (мало опыта с winAPI)
DVM (2004-09-07 12:55:00) [12]SwitchToThisWindow()
> Есть приложение, необходимо чтобы его форма была всегда
> в фокусе. На форме есть таймер на событие его изменение
> я и хочу поставить проверку что сейчас активно.
На кой тут таймер, окну и так приходят соответствующие сообщения при получении/потере фокуса.