Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Перехват сообщений между программами 
:(
    Опции темы
Redhopter
Дата 12.10.2004, 07:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Пусть есть 2 программы, обменивающиеся сообщениями:передатчик и приемник. Передатчик шлет сообщение при помощи postmessage или sendmessage программе-приемнику. Сообщение пользовательское, т.е. сообщение=wm_User+(какое-то число). Программа-приемник принимает это сообщение и выполняет какое - либо действие.
Тепеь вопрос: как мне написать программу-перехватчик, которая будет перехватывать сообщение,посылаемое программой-передатчиком, затем спрашивать у пользователя:"Передать сообщение программе-приемнику" и затем,передавать или не передавать его программе-приемнику?
Может можно, как-нить попробовать переадресовать сообщения вместо программе-приемнику системно можно пересылать их программе-перехватчику?
qstn.gif
sample.gif
Если у кого есть код программы, то выложите ..Желательно и саму программу с исходниками...
PM MAIL   Вверх
x77
Дата 12.10.2004, 09:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



а зачем все эти сложности? ну шли сообщения сразу "программе - перехватчику", пусть она спрашивает у пользователя и, в свою очередь, отсылает его конечной "программе - приёмнику".


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Redhopter
Дата 12.10.2004, 13:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Нет...Это надо мне так как надо написать фильтр сообщений для одной программы...И для этого мне надо перехватывать посылаемые ей сообщения
Добавлено @ 13:46
Интересно, хоть кто-нить это знает???
sample.gif
PM MAIL   Вверх
x77
Дата 12.10.2004, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



это делается через SetWindowsHookEx, где idHook = WH_CALLWNDPROC.

смотри в Win32 SDK.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Guest
Дата 13.10.2004, 08:21 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











  Вверх
Redhopter
Дата 17.10.2004, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Товарищи!!!
Всятаки если не тяжело, то объясните как пользовать функцию SetWindowsHookEx..
синтаксис: function SetWindowsHookEx(idHook: Integer; lpfn: TFNHookProc; hmod: HINST; dwThreadId: DWORD): HHOOK;
Понятно, что для моего случая idHook=WH_CALLWNDPROC, т.к. я хочу перехватывать сообщение пока оно дойдет до окна.А вот чему поставить значение адреса в памяти функции ловушки lpfn? как его найти?
Теперь еще вопрос:для отлеживания сообщений для одной программы мне надо надо поставить локальную ловушку или глобальную? Ведь я буду отслеживать сообщения для другой программы, а не для своей...И если ставить глобаьную, то опять как мне найти hmod?
И конец...как понимать фразу "id потока, который Ваша программа будет контролировать"..
Т.е я должен контролировать программу, которая посылает сообщения или принимает?...



:qstn
PM MAIL   Вверх
Redhopter
Дата 18.10.2004, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Блин народ..подскадите как правильно использовать SetWindowsEx
:sample
PM MAIL   Вверх
decoder
Дата 18.10.2004, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 18.5.2004
Где: Харьков(хохол, к сожалению)

Репутация: 1
Всего: -1



Про хуке в ДРКБ написссссссано:)
WH_CALLWNDPROC - не нужен, в принципе.
WH_GETMESSAGE - это сила!
Пишешь хук ГЕТМЕСЕДЖ, там ловишь своё сообщение и "резалт := 1".
Хэлп спасёт мир!
Добавлено @ 17:43
Народ, и мне расскажите чё за функция SetWindowsEx!!!!!!!
--------------------
Молчать, я вас спрашиваю!
PM MAIL   Вверх
x77
Дата 18.10.2004, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



SetWindowExtEх, могет быть? а то, типа, нет такой функции :(


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Redhopter
Дата 18.10.2004, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Да кстати, а где резальт прописывать?и че это вообще за резальт?Он к getmessage или к setwindowshookex относиться
PM MAIL   Вверх
decoder
Дата 18.10.2004, 20:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 18.5.2004
Где: Харьков(хохол, к сожалению)

Репутация: 1
Всего: -1



Батенька, читайте хэлп!
Ладно, напишу чё-нить...
Код длл-ки:
Код

library dll
uses
 Windows, Messages;
var
 Hook: hHook;
function HookProc(Code: Integer; wParam: Word; lParam: Integer): Integer; stdcall;
 begin
   if (TMsg(Pointer(lParam)^).message) = WM_YOURMESSAGE{твоё сообщение}) and (TMsg(Pointer(lParam)^).hwnd = Window_Receiver{хэндл твоего окна-приемника}) then
     begin
       {с диалогами сам думай}
       if Applied then {Applied - переменная. Тру - сообщение посылать, Фолс - не посылать}
         Result := CallNextHookEx(Hook, Code, wParam, lParam)
       else
         Result := 1;
     end;
 end;
function SetHook(State: Boolean): Boolean; export;
 begin
   if State then
     begin
       if Hook = 0 then Hook := SetWindowsHookEx(WH_GETMESSAGE, @HookProc, hInstance, 0);
       Result := (Hook <> 0);
     end
   else
     begin
       if Hook <> 0 then UnhookWindowsHookEx(Hook);
       Result := True;
     end;
 end;
exports SetHook;
begin
end.

Эх, делать мне нечего...
--------------------
Молчать, я вас спрашиваю!
PM MAIL   Вверх
Redhopter
Дата 18.10.2004, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 30.9.2004
Где: Нижний Новгород

Репутация: нет
Всего: нет



Блин..реябт..вы мне помогли..а то я б с этим WinApi долго б еще разбирался...Хотя начал потихоньку вникать...Но вы мне окончательно помогли...
Большое человеческое спасибо....

PM MAIL   Вверх
decoder
Дата 18.10.2004, 21:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 204
Регистрация: 18.5.2004
Где: Харьков(хохол, к сожалению)

Репутация: 1
Всего: -1



Cпасибо не булькает... Ладно, смирюсь с безисходностью...
--------------------
Молчать, я вас спрашиваю!
PM MAIL   Вверх
x77
Дата 18.10.2004, 21:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: -1
Всего: 22



decoder, а вдруг он тоже харьковский? :) булькало - оно понятие растяжимое, учитывая что земля - круглая, а жизнь - долгая :)

сорри за оффтоп.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0505 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.