Вниз
Скачать: CL | DM;

Форма не обрабатывает сообщения, когда неактивна   Найти похожие ветки 

 
Se   (2005-12-14 08:06) [0]

Я сделал HOOK. При его загрузке передаю в него handle окна.
При нажатии кнопки, HOOK посылает в handle сообщение:
sendmessage(WinHandle,WM_USER+10,wParam,lParam);

В модуле окна прописана процедура:
procedure WMHook(var Message: TMessage); message WM_USER+10;

Когда окно активно все работает. Но если переключиться на что-то другое, то процедура не вызывается. Хотя HOOK работает (я ставил внутри хука оператор messagebox, там где вызывается sendmessage,  - при этом сообщение появляется в любом случае).
Основная программа написана на VCL.


 
Digitman ©   (2005-12-14 08:18) [1]


> то процедура не вызывается


на основании чего сделано такое умозаключение ?


 
Rouse_ ©   (2005-12-14 09:44) [2]

messagebox в хуке? Оригинально. Система еще не падала?


 
Leonid Troyanovsky ©   (2005-12-14 09:52) [3]


> Se   (14.12.05 08:06)  

> Когда окно активно все работает. Но если переключиться на
> что-то другое, то процедура не вызывается. Хотя HOOK работает


Если он и работает, то локально.
А для чего-то другого требуется глобальный хук (msdn go).
Кста, там, заоодно, познакомишься c  interprocess communication, т.е.
как передать данные другому процессу (т.е., своему хуку в
чужом процессе) и получить их от него.

--
Regards, LVT.


 
Leonid Troyanovsky ©   (2005-12-14 09:54) [4]


> Rouse_ ©   (14.12.05 09:44) [2]
> messagebox в хуке? Оригинально. Система еще не падала?


Если б она падала от MessageBox, то ее б и не стоило пользовать.

--
Regards, LVT.


 
Se   (2005-12-14 10:32) [5]

Ничего не падает. messagebox для отладки.
Передавать данные я хочу через sendmessage при этом форма должна получать данные в любом случае.


 
Rouse_ ©   (2005-12-14 10:45) [6]


> Если б она падала от MessageBox, то ее б и не стоило пользовать.

Хм, WH_DEBUG в хуке в библиотеке и при поступлении сообщения MessageBox... Сообщение по цепочке хуков до закрытия модальноко окна не должно быть передано и соответственно все стоит :)


 
VirEx ©   (2005-12-14 17:48) [7]

дык может поймать событие Application.OnIddle (вроде так называется)


 
Se   (2005-12-17 09:42) [8]

Не работает. Хотя я может не знаю как правильно использовать OnIddle.
В обработчике я написал PeekMessage.


 
Igor_thief   (2005-12-18 12:38) [9]

RegisterWindowMessage или CallBack функция.


 
Se   (2005-12-19 19:56) [10]

CallBack функция в основной программе ведет себя так же (не обрабатывается, когда форма не активна)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: -0.967 c
2-1141033977
Azeem
2006-02-27 12:52
2006.03.12
Буфер обмена


9-1126094102
rsy
2005-09-07 15:55
2006.03.12
Ресурсы для игры


2-1140528664
Лёха
2006-02-21 16:31
2006.03.12
как преобразовать hwnd в string


15-1139930357
Бедный Йорик
2006-02-14 18:19
2006.03.12
Pleazzzzzzzzzzzzzzzzzz!


15-1140068793
Ega23
2006-02-16 08:46
2006.03.12
С Днём рождения! 16 февраля




   Наверх