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

Вниз

Обмен данными между процессами ( WM_COPYDATA)   Найти похожие ветки 

 
BOGa   (2007-03-10 14:38) [0]

Необходимо переслать копию сообщения из функции-фильтра своему приложению.

{Функция-фильтр для ловушки WH_GETMESSAGE}
function HookProc (Code:Integer; wParam:word; lParam:longint): longint ; stdcall;
var
 mes:TMsg;
 CDS: TCopyDataStruct;
 WRH:HWND;
begin
 if Code=HC_ACTION then
 begin
   mes:=TMsg(pointer(lParam)^);
   cds.cbData:=sizeof(TMsg);
   GetMem(CDS.lpData,cds.cbData);
   cds.lpData:=@mes;
   WRH:=findwindow(nil,"WinRecorder");
   sendmessage(WRH, WM_COPYDATA, 0, integer(@CDS));
   cds.lpData:=nil;
   FreeMem(cds.lpData,cds.cbData);
 end;
  Result := CallNextHookEx(HH, Code, wParam, lParam);
end;

{Обработчик WM_COPYDATA}
procedure TForm1.CopyData_Mes (var a:TWMCopyData);
var
 mes:TMyMsg;
begin
 mes.Mess:=TMsg(a.CopyDataStruct.lpData^);
 write(f,mes);
// a.CopyDataStruct.lpData:=nil;
 a.Result := 1;
end;


При выходе их обработчика WM_COPYDATA выдается ошибка "Invalid pointer operation". Если в обработчик вставить              a.CopyDataStruct.lpData:=nil, все работает нормально, но это, как я понимаю, не корректно (или нет?).И если это сделать, то  FreeMem в функции-фильтре выдает ошибку.
FreeMem(a.CopyDataStruct.lpData, a.CopyDataStruct.cdData) в обработчике, также выдаст ошибку.
Если можно, объясните механизм работы WM_COPYDATA, или дайте ссылку на эту информацию.
Заранее спасибо.


 
Eraser ©   (2007-03-10 19:38) [1]

> Если можно, объясните механизм работы WM_COPYDATA

в MSDN всё объеснено и даже пример есть
http://msdn2.microsoft.com/en-us/library/ms649009.aspx
вот на Делфи
http://www.swissdelphicenter.ch/torry/showcode.php?id=810


 
Eraser ©   (2007-03-10 19:39) [2]

> объеснено

объяснено )



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

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

Наверх




Память: 0.47 MB
Время: 0.021 c
15-1186089042
Модуль
2007-08-03 01:10
2007.09.02
Как отловить нажатия на кнопки вверх, вниз, на панели?


8-1164745849
Oburec
2006-11-28 23:30
2007.09.02
Как отобразить графику рисуемую c OpenGL на простой форме)


2-1186458973
Roun
2007-08-07 07:56
2007.09.02
При удалении строки из ListView - удалялось из txt


2-1186909904
loeg
2007-08-12 13:11
2007.09.02
Два вопроса


2-1186558216
Alral
2007-08-08 11:30
2007.09.02
TMemo. Поиск строк.