Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Вниз

Непонятная работа хука на 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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.12.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.031 c
1-1101980979
Dimedrol
2004-12-02 12:49
2004.12.19
Подскажите компонентик для ZIP-ования.


3-1100953359
Iova
2004-11-20 15:22
2004.12.19
rdb$...


3-1100685372
Highlander
2004-11-17 12:56
2004.12.19
Подключение к БД IB/FB по локалке


9-1092932198
JUS
2004-08-19 20:16
2004.12.19
Дайте ссылку, где я могу скачать компоненту PowerDraw 3


3-1100508839
Фазер
2004-11-15 11:53
2004.12.19
Ещё один вопрос по except





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский