HotKeySet aktivieren/deaktivieren

  • Hallo zusammen :)

    Ich habe eine ganz simple Frage...
    Kann man, wenn ja, wie, einen gesetzten HotKey wieder entfernen wenn ein bestimmten Wert ausgelesen wird?

    Hintergrund ist folgender:
    Ich habe ein Programm, bei dem die Computer gesperrt sind und über eine GUI mit Passwortfeld freigeschalten werden können. Damit das Programm nicht einfach so minimiert werden kann, habe ich auf bestimmte Tasten einen HotKey gesetzt, wie z.B. auf den Tabulator.
    Der HotKey wird erst gesetzt, wenn das Programm aus einer INI-Datei den Wert für "Computer gesperrt" ausliest. Wird der Computer freigeschalten, sollen auch alle gesperrten Tasten wieder funktionieren.

    Gibt es eine Möglichkeit einen HotKey nur innerhalb einer bestimmten Schleife aktiv zu halten, bzw. diesen dann wieder zu entfernen?

    Oder vielleicht habt ihr ja andere Ideen wie man das sinnvoller Umsetzen kann als die einzellnen Tasten mit einem HotKey zu belegen :)


    Habt schon einmal vielen Dank! :)

    Einmal editiert, zuletzt von Jasfar (12. Februar 2014 um 09:16)

  • Eine Alternative wäre hier wohl

    [autoit]

    BlockInput

    [/autoit]

    (Ctrl+Alt+Del wird dadurch natürlich nicht geblockt!)

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Achso ja, stimmt.
    Hatte nicht ganz mitgedacht. ^^

    Jedenfalls, HotKeys kannst du mit einfach wieder aufheben, indem du HotKeySet mit dem aufzuhebenden HotKey aufrufst, jedoch ohne den 2. Parameter anzugeben. Das kannst du auch in der Hilfe nachlesen. ;)

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Hallo,

    zum Sperren von einzelnen Tasten solltest du dir mal unbedingt die BlockInputEx-UDF ansehen. Damit kannst du z.B. nur Buchstabeneingaben (für Passwörter) zulassen. Außerdem kannst du auch Maus und Tastatur getrennt blockieren, was ich beispielsweise auch in meinem eigenen Skript "Screenlock" ausgenutzt habe. Lade dir am besten mal die UDF (Zip-Datei) herunter und schaue dir die verschiedenen Beispiele an.

    MfG Xenon :)

  • Vielen Dank für eure Antworten, jetzt habe ich 3 Lösungsansätze. Mir ist gestern abend kurz vorm schlafen gehen auch noch eine Möglichkeit eingefallen :)

    Und zwar, wenn man den HotKey einfach mit einer If Abfrage verbindet. Etwa so:

    [autoit]


    HotKeySet("{TAB}", _function)

    [/autoit][autoit][/autoit][autoit]

    Func _function()
    If $computerstatus1 = 0 then ;0 Für gesperrt
    MsgBox(0,"Fehler","Die Taste ist gesperrt")
    ElseIf $computerstatus1 = 1 then ;1 Für freigeschalten
    Send("{Tab}")
    EndIf
    EndFunc

    [/autoit][autoit][/autoit][autoit][/autoit]

    Ich hab das jetzt nicht getestet aber so sollte es ja auch funktionieren...

    Ich werde mir aber mal die UDF Herunterladen und mir mal ansehen, ist glaube ich die sauberste Lösung, ich danke euch :)

    LG
    Marv :rock: