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

Вниз

Непонятная работа хука на WH_GETMESSAGE   Найти похожие ветки 

 
bigcrush   (2004-11-02 10:40) [0]

Здравствуйте, все.
Мне нужно отлавливать в определённом окне(чужом) сообщения WM_WINDOWPOSCHANGED, WM_WINDOWPOSCHANING, WM_MOVE и блокировать.
В MSDN написано, что по WH_GETMESSAGE можно изменять сообщение, что я и пытаюсь сделать(ставлю msg.message:=WM_NULL).

Проблема в том что эти сообщения не отлавливаются в нужно мне окне. Пробовал ставить хук на WM_CALLWNDPROC. Сообщения ловятся, но их нельзя изменить.

Подскажите, пожалуйста.


 
TUser ©   (2004-11-02 10:49) [1]


> Проблема в том что эти сообщения не отлавливаются в нужно
> мне окне

Так ты ведь их блокируешь - они и не ловятся.


 
Digitman ©   (2004-11-02 10:52) [2]


> эти сообщения не отлавливаются в нужно мне окне


раз не "отлавливаются", значит они ему не адресуются.


 
bigcrush   (2004-11-02 10:59) [3]

не так.
Я сначала проверяю ловятся ли они вообще, а уж потом блокировать собираюсь. Пока у меня просто заглушка стоит MessageBox(0,0,0,0).

Только что попробывал у меня совсем не отлавливаюся эти сообщения ни в каких окнах.


function GetMsgProc(code:integer;wP:integer;lP:integer):integer; stdcall;
var msg:^TMessage;
   m:cardinal;
begin
if code<0 then
   begin
   result:=CallNextHookEx(data^.hook, code, wP, lP);
   exit;
   end;
msg:=PMessage(lP);
m:=msg^.message;
if (m=WM_WINDOWPOSCHANGING) or
  (m=WM_WINDOWPOSCHANGED) or
  (m==WM_MOVE) then MessageBox(0,0,0,0);
Result:=CallNextHookEx(data^.hook, code, wP, lP);
end;


data - это отображение в файл подкачки. Там hwnd отлавливаемого окна и др.


 
bigcrush   (2004-11-02 11:02) [4]

на самом деле сообщения доходят. Они отлавливаются по WM_CALLWNDPROC, и Spyxx показывает, что сообщения пришли, но на WH_GETMESSAGE не реагирует.


 
TUser ©   (2004-11-02 11:09) [5]

Т.е. они хуком не ловятся? Покажи - как его ставишь.


 
Inc   (2004-11-02 15:05) [6]

2bigcrush   (02.11.04 11:02) [4]

Так всё и должно быть.
WH_GETMESSAGE ловит только то, что через очередь
сообщений проходит (PostMessage).


 
bigcrush   (2004-11-03 07:50) [7]

2 Inc
то есть, если я вызываю SetWindowPos, то винда WM_MOVE напрямую в оконную процедуру посылает?


 
Digitman ©   (2004-11-03 08:01) [8]


> то есть, если я вызываю SetWindowPos, то винда WM_MOVE напрямую
> в оконную процедуру посылает?


да.
только  не "посылает", а "вызывает".


 
bigcrush   (2004-11-03 16:10) [9]

Ясно. Спасибо. Буду искать другие способы для блокирования сообщений. Подскажите, чтобы мне не идти в неверном направлении.

Можно заменить оконную процедуру своей и принятые сообщения блокировать, для остальных вызывая старую процедуру. Естественно это буду делать в АП процесса, которому окно принадлежит. Так правильно?


 
bigcrush   (2004-11-03 16:12) [10]

Я не со своей машины в инете, вот и спрашиваю. Только ч/з несколько дней доберусь до программирования.


 
Digitman ©   (2004-11-03 16:22) [11]


> bigcrush   (03.11.04 16:10) [9]


ежели через задний проход - можно и так.


 
bigcrush   (2004-11-04 07:36) [12]

А как правильнее и проще? Ч/з задний больновато :((


 
Digitman ©   (2004-11-05 09:26) [13]


> bigcrush   (04.11.04 07:36) [12]


можно, например, перехватить в АП целевого процесса точку входа в SendMessage-ф-цию, при обработке перехвата анализировать ее параметры и не вызывать оригинальную ф-цию при заданных тобой условиях

не знаю насколько это "больновато", но это тоже решение



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

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

Наверх




Память: 0.5 MB
Время: 0.024 c
8-1095743439
DelphiN!
2004-09-21 09:10
2004.12.19
Компонент для перетикания изображения


1-1102076409
Mouserx
2004-12-03 15:20
2004.12.19
Помогите состыковатся с DLL написаной на C


14-1101926263
Knight
2004-12-01 21:37
2004.12.19
Можно ли подключить в VMWare модем?


14-1101537763
Greka
2004-11-27 09:42
2004.12.19
Русский шрифты в англ Windows.


3-1100850329
axx
2004-11-19 10:45
2004.12.19
Рекомендации по FIBs и TThread