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
wc
Char;
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
copyData
CopyDataStruct;
y:HWND;
x:integer;
writeData
AnsiChar;
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