Also, ich habe die Hook-
dll von Aya, die bei LuckieSpy dabei war.
Nun siehtihr code aber so aus:
Delphi-Quellcode:
function KeyboardProc(nCode: Integer; wParam: LongWord; lParam: LongWord): LongWord;
stdcall;
var
LastKey: Char;
KeyState: TKeyboardState;
begin
Result:=CallNextHookEx(hHook,nCode,wParam,lParam);
if nCode<0
then
Exit
else begin
KeyboardLayout:=GetKeyboardLayout(0);
GetKeyboardState(KeyState);
if ToAsciiEx(wParam,MapVirtualKeyEx(wParam,2,KeyboardLayout),KeyState,@LastKey,0,KeyboardLayout)>0
then
Key:=Ord(LastKey)
// Hier wird ein ASCII-Wert zurückgegeben
else
Key:=wParam;
// Und hier ein virtueller Tastencode
if (lParam
and $80000000)=0
then
if not (wParam
in [16,17,18])
or GetShiftKeys
then
PostMessage(hwndBuffer^,WM_KEYBOARD_HOOK,Key,GetActiveWindow);
end;
end;
Nun dachte ich, man könnte die ganzen Abfragen einfach wegmachen und das dann so schreiben:
Delphi-Quellcode:
Result:=CallNextHookEx(hHook,nCode,wParam,lParam);
if nCode<0 then
Exit
else begin
if (lParam and $80000000)=0 then
if not (wParam in [16,17,18]) or GetShiftKeys then
PostMessage(hwndBuffer^,WM_KEYBOARD_HOOK,wParam,GetActiveWindow);
end;
Nur ist jetzt folgendes Problem: sobald ich die
dll kompiliere, und verwende gibt's immer beim Loslassen einer Taste einen Runtime-Error XXX
Sogar, wenn ich einfach nur den Source ohne Änderungen kompiliere.
Außerdem ist die erzeugte
dll größer als die, die beim LuckieSpy dabei war, selbst wenn ich letztere mit upx entpacke ...
Ich brauche die VK', weil ich nachher die Tastenfolge wiedergeben möchte, und Keybd_Event einen VK will ...