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

Вниз

Объясните как отловить сообщение чужой программы   Найти похожие ветки 

 
Lex_! ©   (2002-06-23 04:23) [0]

Есть у меня такой код:

H:=FindWindowEx(Findwindow("Shell_TrayWnd",nil),0,"Button",nil);

Это буит хендл кнопки пуск, и нужно вот мне отлавливать сообщения которые она получает, посоветовали мне использовать:

GetWindowLong(H,GWL_WNDPROC);

но она возвращает 0 всегда.... мож я чего не так делаю..... помогите пожалуйста, и если мона примерчик киньте.....

Заранее всем спасибо!.....:о)


 
rhf ©   (2002-06-23 07:04) [1]

а ты хоть смотрел, что getWindowLong делает?

если нет, то вдумайся вот в это:
The GetWindowLong function retrieves information about the specified window. The function also retrieves the 32-bit (long) value at the specified offset into the extra window memory of a window.

а вот так это звучит если учесть твои параметры:
Retrieves the address of the window procedure, or a handltckbe representing the address of the window procedure. You must use the CallWindowProc function to call the window procedure.

ну вот.... а теперь задумайся, что же за 0 ты получаешь.......


 
Lex_! ©   (2002-06-23 07:32) [2]

Насколько я понял,возвращает адрес процедуры обработки сообщений программы.... но это явно не должен быть 0.....
Или если я не так понял - объясни... только пожалуйста без такого что а ты хоть знаеш....... а в твоем случае......
По русски пожалуйста......


 
Юрий Зотов ©   (2002-06-23 08:21) [3]

Адрес-то она возвращает, только вот КАКОЙ это адрес? Он же в ЧУЖОМ адресном пространстве, доступа к нему Вы все равно не получите. А в данном конкретном случае не получите даже и адреса - GetWindowLong не дура, она соображает, что оконная функция чужая, вот и выдает ноль.

Используйте глобальный хук.


 
Lex_! ©   (2002-06-23 09:14) [4]

Ну так вот как мне отловить сообщения то ктонибудь скажет или нет???....:о((((


 
rhf ©   (2002-06-23 10:50) [5]

тебе же сказали - hook, но может и есть другие варианты.....

а про хуки читай тут
http://delphi.mastak.ru/articles/hooks/index.html

очень полезно, для общего развития :)


 
Lex_! ©   (2002-06-23 10:54) [6]

Во, спасибо....
Почитаю на досуге...:о)


 
Lex_! ©   (2002-06-25 04:44) [7]

Чегото ничего не выхожит с описанием таким.... мож кто примерчик даст, именно с сообщениями, а то там тока клава помоему есть...:о(


 
Lex_! ©   (2002-06-29 10:00) [8]

Всмысле сообщения клавы и мыши ловят те примеры....
А мне нужно сообщение перерисовки ловить...


 
Юрий Зотов ©   (2002-06-29 20:18) [9]

> А мне нужно сообщение перерисовки ловить...

Ставите хук WH_GETMESSAGE, а в хуке проверяете, что это WM_PAINT и что оно адресовано именно тому окну, которое Вас интересует.

А вообще, похоже, что Вы хотите просто изменить кнопку "Пуск". Тогда все проще, никаких хуков не требуется. Находите хэндл этой кнопки и посылаете ей WM_SETTEXT и/или BM_SETIMAGE.


 
Diamond Cat ©   (2002-06-30 00:39) [10]

2 Юрий Зотов: Ну очень прошу напиши мне свой адрес, и я буду хранить его в бумажном виде , а то комп все время падает (харды мрут) и эта ценная инфа исчезает
Прошу у всех извенить меня , что не потеме


 
Diamond Cat ©   (2002-06-30 00:39) [11]

2 Юрий Зотов: Ну очень прошу напиши мне свой адрес, и я буду хранить его в бумажном виде , а то комп все время падает (харды мрут) и эта ценная инфа исчезает
Прошу всех извинить меня , что не потеме


 
Lex_! ©   (2002-07-01 04:25) [12]

Да нет, кнопку "Пуск" мне не надо менять, это просто пример был такой, мне это совсем для другой проги надо.... Спасибо что сказали как, щас проверю...:)


 
Acidy   (2002-07-18 10:44) [13]

В экзаменах оценку поменять !!!... хи-хи ...!



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

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

Наверх




Память: 0.49 MB
Время: 0.02 c
1-27011
Yaro
2002-08-30 03:37
2002.09.09
Выравнивание в ячейке StringGrid a


4-27281
bytebutcher
2002-07-19 16:56
2002.09.09
Как в DLL узнать PID процесса вызвавшего из этой DLL функцию


1-27086
Юра
2002-08-20 10:00
2002.09.09
Вызов раздела помощи кликом мышки на компоненте


3-26909
Programmer1
2002-08-16 14:02
2002.09.09
Upgrade базы данных Paradox


6-27142
МитяЙ2
2002-06-20 14:42
2002.09.09
Сеть