| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: WinAPI и системное программирование > Перехват сообщений между программами |
| Автор: Redhopter 12.10.2004, 07:18 |
| Пусть есть 2 программы, обменивающиеся сообщениями:передатчик и приемник. Передатчик шлет сообщение при помощи postmessage или sendmessage программе-приемнику. Сообщение пользовательское, т.е. сообщение=wm_User+(какое-то число). Программа-приемник принимает это сообщение и выполняет какое - либо действие. Тепеь вопрос: как мне написать программу-перехватчик, которая будет перехватывать сообщение,посылаемое программой-передатчиком, затем спрашивать у пользователя:"Передать сообщение программе-приемнику" и затем,передавать или не передавать его программе-приемнику? Может можно, как-нить попробовать переадресовать сообщения вместо программе-приемнику системно можно пересылать их программе-перехватчику? Если у кого есть код программы, то выложите ..Желательно и саму программу с исходниками... |
| Автор: x77 12.10.2004, 09:46 |
| а зачем все эти сложности? ну шли сообщения сразу "программе - перехватчику", пусть она спрашивает у пользователя и, в свою очередь, отсылает его конечной "программе - приёмнику". |
| Автор: Redhopter 12.10.2004, 13:44 |
| Нет...Это надо мне так как надо написать фильтр сообщений для одной программы...И для этого мне надо перехватывать посылаемые ей сообщения Добавлено @ 13:46 Интересно, хоть кто-нить это знает??? |
| Автор: x77 12.10.2004, 14:13 |
| это делается через SetWindowsHookEx, где idHook = WH_CALLWNDPROC. смотри в Win32 SDK. |
| Автор: Guest 13.10.2004, 08:21 |
| http://www.delphiworld.narod.ru/base/create_hook.html |
| Автор: Redhopter 17.10.2004, 09:42 |
| Товарищи!!! Всятаки если не тяжело, то объясните как пользовать функцию SetWindowsHookEx.. синтаксис: function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK; Понятно, что для моего случая idHook=WH_CALLWNDPROC, т.к. я хочу перехватывать сообщение пока оно дойдет до окна.А вот чему поставить значение адреса в памяти функции ловушки lpfn? как его найти? Теперь еще вопрос:для отлеживания сообщений для одной программы мне надо надо поставить локальную ловушку или глобальную? Ведь я буду отслеживать сообщения для другой программы, а не для своей...И если ставить глобаьную, то опять как мне найти hmod? И конец...как понимать фразу "id потока, который Ваша программа будет контролировать".. Т.е я должен контролировать программу, которая посылает сообщения или принимает?... |
| Автор: Redhopter 18.10.2004, 17:37 |
| Блин народ..подскадите как правильно использовать SetWindowsEx |
| Автор: decoder 18.10.2004, 17:42 |
| Про хуке в ДРКБ написссссссано WH_CALLWNDPROC - не нужен, в принципе. WH_GETMESSAGE - это сила! Пишешь хук ГЕТМЕСЕДЖ, там ловишь своё сообщение и "резалт := 1". Хэлп спасёт мир! Добавлено @ 17:43 Народ, и мне расскажите чё за функция SetWindowsEx!!!!!!! |
| Автор: x77 18.10.2004, 19:09 |
| SetWindowExtEх, могет быть? а то, типа, нет такой функции |
| Автор: Redhopter 18.10.2004, 19:34 |
| Да кстати, а где резальт прописывать?и че это вообще за резальт?Он к getmessage или к setwindowshookex относиться |
| Автор: decoder 18.10.2004, 20:39 | ||
| Батенька, читайте хэлп! Ладно, напишу чё-нить... Код длл-ки:
Эх, делать мне нечего... |
| Автор: Redhopter 18.10.2004, 21:22 |
| Блин..реябт..вы мне помогли..а то я б с этим WinApi долго б еще разбирался...Хотя начал потихоньку вникать...Но вы мне окончательно помогли... Большое человеческое спасибо.... |
| Автор: decoder 18.10.2004, 21:27 |
| Cпасибо не булькает... Ладно, смирюсь с безисходностью... |
| Автор: x77 18.10.2004, 21:30 |
| decoder, а вдруг он тоже харьковский? сорри за оффтоп. |