Fragen zu HotKeySet

  • Moin,

    In der deutschen Funktionsreferenz steht, wenn man einen Key abfangen will und an das aktive Fenster weiter geben will folgendes Beispiel:

    [autoit]

    ; jeden Tastendruck abfangen und weiterreichen

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

    HotKeySet("{Esc}", "captureEsc")

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

    Func captureEsc()

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

    ; ... Hier kann etwas gemacht werden

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

    HotKeySet("{Esc}")

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

    Send("{Esc}")

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

    HotKeySet("{Esc}", "captureEsc")

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

    EndFunc

    [/autoit]

    Ich verstehe nicht ganz warum der Hotkey in Zeile 9 geändert werden muss bevor es in Zeile 11 gesendet werden kann. Ich denke mal das es dafür ne einfache Erklärung gibt aber ich hab bisher keine finden können :o.

    Ein weiteres Problem von mir ist, wenn ich mehrere Hotkeys auf die oben beschriebene Weise belege (mit @hotkeypressed) und diese dann in einer raschen Folge drücke kommt Autoit irgendwann nicht mehr hinterher und die Funktion wird dann garnicht mehr ausführt egal wie oft man den hotkey drückt.

    Einmal editiert, zuletzt von PeterPan (17. Dezember 2008 um 12:49)

  • Also dazu das der Hotkey nochmal gesetzt wird:

    Du weist ja oben der ESC-Taste diese Funktion zu, also lässt sie ausführen, wenn man ESC drückt. Wird nun die ECS-Taste in dieser Funktion gedrückt "simuliert", dann würde ja wieder die Funktion aufgerufen werden. So würde sich alles im Kreis drehn. (ESC-Taste drücken -> Funktion startet -> ESC-Taste gedrückt "simuliert" -> Funktion startet....)

    Wenn du den Hotkey vorher ohne eine Funktionszuweisung schreibst -> HotKeySet("{Esc}") dann wird die Funktion: captureEsc() nicht mehr ausgeführt.

    Zu deinem 2.ten Problem:

    Vielleicht mit der Funktion: _IsPressed löschen, aber da bin ich mir nicht sicher.


    Mfg
    Jautois

  • @Jautois
    Danke, das hab ich soweit verstanden

    FirePanther
    Ich hab gefragt, *warum* man das so macht und er hat in seinem Post erklärt was passieren würde wenn man das nicht machen würde.

    Ich hab das jetzt mit _ispressed realisiert (Der Code ist gleich mal um 100 Zeilen gewachsen :/ ), danke für das Beispiel