Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.10;
Скачать: CL | DM;

Вниз

Фокус на свое приложение   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2004.10.10;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.044 c
3-1094798680
Михаил Дарий
2004-09-10 10:44
2004.10.10
Проблема с украинской буквой "і" и "ї"


1-1095429251
kot_phg
2004-09-17 17:54
2004.10.10
Как сделать чтобы задача выполнялась в фоновом режиме...


14-1096000394
SiJack
2004-09-24 08:33
2004.10.10
Доброе утро!!! Не подскажете чем


1-1096272219
Dimastiy04
2004-09-27 12:03
2004.10.10
Расстягивание скинообразной формы приложения


14-1095956023
VEG
2004-09-23 20:13
2004.10.10
У нас было землетрясение