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