Wenn ich mit SetKeyState die Taste Capslock simuliere kann ich mit folgender Funktion nicht prüfen, ob Capslock an oder aus ist, warum?
Delphi-Quellcode:
procedure TForm1.SetKeyState(const ACode: Integer; Value: Boolean);
var
KeyState: TKeyboardState;
begin
// ZeroMemory(Pointer(@KeyState), SizeOf(KeyState));
GetKeyboardState(KeyState);
if (Byte(Ord(Value)) <> KeyState[ACode]) then
begin
Keybd_event(ACode, $3A, KEYEVENTF_EXTENDEDKEY, 0);
Keybd_event(ACode, $3A, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);
KeyState[ACode] := Ord(Value);
SetKeyboardState(KeyState);
end;
end;
...
...
function TForm1.Capslock_anoderaus:boolean;
var
KeyboardState: TKeyboardState;
begin
GetKeyboardState(KeyboardState);
if KeyboardState[VK_CAPITAL] = 1 then Result:=True
else
Result:=False;
end;
...
...
procedure TForm1.Button2Click(Sender: TObject);
begin
if Capslock_anoderaus = true then Label1.caption:='LED des Capslock an der Tastatur an'
else
Label1.caption:='LED des Capslock an der Tastatur aus';
end;
Capslock_anoderaus funktioniert, wenn ich die Taste wirklich drücke, wenn ich sie mit SetKeystate an oder aus mache, funktioniert die Capslock_anoderaus nicht.