Einzelnen Beitrag anzeigen

Codix32

Registriert seit: 23. Apr 2009
137 Beiträge
 
Delphi 2005 Personal
 
#1

Capslock mit SetKeyState und Status prüfen

  Alt 15. Nov 2014, 22:16
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.
  Mit Zitat antworten Zitat