Einzelnen Beitrag anzeigen

gabitzi

Registriert seit: 20. Sep 2003
5 Beiträge
 
Delphi 7 Professional
 
#7

Re: daten zw dll und programm via sendmessage verschicken

  Alt 22. Sep 2003, 19:25
hallo

inzwischen schaffe ich es die daten (das heisst, den handle zu verschicken) aber leider nicht richtig. Es handelt sich tatsachlich um eine hook dll, und ich versuche den handle des activen(egtforeground window) zu verschicken. Im programm zeige ich dann woher es kam. ich bekomme den richtigen handle aber nur wenn ich in meinem eigen Fenster binn. Ansonsten scheinen die zahlen nicht zu stimmen.

dll procedure

function KbdHook(hCode,wParam:LongInt;lParam:LongInt):Longi nt;stdcall;
var
wcChar;
Hw:HWND;
CDS: TCopyDataStruct;

begin

if (MyData^.Msg<>0) and (hCode=HC_ACTION) then
begin
PostMessage(MyData^.Handle,MyData^.Msg,wParam,lPar am);
hw:= GetForegroundWindow();
MyData^.st:=hw;
;
with CDS do
begin
dwData := 0;
cbData := SizeOf(integer);
lpData := Pointer(MyData^.st);
end;

SendMessage(MyData^.Handle, WM_COPYDATA, 0, LongInt(@CDS));
end;



if (MyData^.hHook <> 0) then begin

Result:=CallNextHookEx(MyData^.hHook,hCode,wParam, lParam)
end else Result:=0

end;


main program:
procedure TfrmHook.WndMsg(var msg: TWMCopyData);
var
copyDataCopyDataStruct;
y:HWND;
x:integer;
writeDataAnsiChar;
begin




copyData:=msg.CopyDataStruct;
x:= Integer(copyData.lpData);
y:=hwnd(x);
showmessage('übergebene Zahl:' + #13 + IntToStr(x));
GetWindowText(y,writedata,254);

showmessage('window' + #13 + string(writedata));

end;

irgendetwas gehe ich bestimmt falsch an ..danke
gabi
  Mit Zitat antworten Zitat