Re: Перехват сообщений одной проги - другой
От: Dr_Sh0ck Беларусь  
Дата: 14.01.02 23:02
Оценка:
Здравствуйте rom30, Вы писали:

R>Есть диалог-базед прога с кнопой.Как надо сделать другую прогу, чтобы она отлавливала

R>нажатие кнопки на первой программе. Она должна быть именно как Spy. Т.е. можно бы конечно сделать что-то типа они друг-друга нюхают. Но надо СОВЕРШЕННО две независимые
R>проги и одна просто перехватывает событие от другой. Ето не шпионство. Нужно по-жизни
R>Спасибо

Я бы попробовал так. Сначала тебе нужно получить ID требуемой кнопки (подсмотреть Spy++, например). Следующие действия должна выполнять программа-шпион:

— определить хэндл диалога в котором находится эта кнопка (например, с помощью FindWindow или FindWindowEx)

— определить хэндл кнопки (ее ID ты уже знаешь — он не меняется), а хэндл диалога ты уже нашел

— создать подкласс кнопки в адресном пространстве процесса с диалогом. Для этого процедуру подкласса нужно вынести в ДЛЛ. Чтобы спроецировать ДЛЛ в адресное пространство процесса с диалогом можно воспользоваться, например SetWindowsHookEx (подробности в книге Рихтера )

— в процедуре подкласса перекрываешь сообщение WM_LBUTTONDOWN. В его обработчике ты и сможешь сообщить в "свой" процесс, что кнопка нажата.

Если программа-шпион должна завершаться раньше программы с диалогом, то позаботься об обратных действиях: возвращение исходной оконной процедуры кнопке и т.п.

Ф-у-у-ф!!! Вроде ничего не забыл!!! (а может забыл? )
Do not fake yourself ;)
ICQ#: 198114726
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.