Главная страница
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.02 c
2-1186662201
alex_tonk
2007-08-09 16:23
2007.09.02
Сохранить как DBF файл


15-1185965081
rebroff
2007-08-01 14:44
2007.09.02
Помогите адекватно оценить комплектующие


2-1186399521
AlinaVK
2007-08-06 15:25
2007.09.02
constraint


8-1164867476
Павел123456
2006-11-30 09:17
2007.09.02
Как "склеить" Bitmap-ы в видео?


4-1173905354
ffo_2
2007-03-14 23:49
2007.09.02
Как программно нажать Ctrl + V?