Laden...

Tastaturinput global blockieren

Erstellt von Neokil vor 11 Jahren Letzter Beitrag vor 10 Jahren 1.340 Views
Neokil Themenstarter:in
206 Beiträge seit 2008
vor 11 Jahren
Tastaturinput global blockieren

Hallo,
nach langer Zeit melde ich mich mal wieder zurück.
Dieses mal geht es darum, dass ich einen "Lockscreen" für den PC erstellen will.
Es sollen also keine Eingaben von Tastatur entgegengenommen werden. Aufgehoben wird die Sperre durch einen Klick auf den "Unlock"-Button.
Die Funktion um alle Inputs zu blockieren habe ich bereits gefunden:


[System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "BlockInput")]
        [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)]
        public static extern bool BlockInput([System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt);

Allerdings wird hier auch die Mauseingabe blockiert. Gibt es eine ähnliche Funktion, mit der nur die Tastatur blockiert wird?

Gruß
Neokil

49.485 Beiträge seit 2005
vor 10 Jahren

Hallo Neokil,

ich würde vermuten, dass man mit ==> Keyboard-Hooks nicht nur global lauschen, sondern auch die Weiterleitung der Nachrichten unterbinden kann, aber sicher bin ich nicht.

herbivore

1.815 Beiträge seit 2005
vor 10 Jahren

Hallo,

mit den Global Hooks kann man auch Tastendrücke unterbinden.
Da die Ereignisse von einem registrierten Handler zum nächsten durchgereicht werden, kann man diese Kette einfach unterbrechen, indem man bestimmte Ereignisse nicht weiterleitet.
Allerdings sollte man dann einer der letzten in der Kette sein, da diese beim zuletzt registrierten Handler startet.

Und beim Testen sollte man per Default eine Timer einbauen, welcher nach einer bestimmten Zeit den Handler wieder abmeldet, sonst hat man bei einem Fehler kaum noch Kontrolle über das System (nur noch mit der Maus).

Nobody is perfect. I'm sad, i'm not nobody 🙁