Fokussiertes Elementhandle erhalten

  • Hallo Leute,

    ich hab die Lösung irgendwann mal im englischen Forum gelesen, kann sie aber nicht wiederfinden :(
    Ich würde gerne einige Hotkeys setzen, u.a. auch einen CTRL+A für die Editbox (um alles zu markieren). Da aber noch weitere Elemente (z.B. Inputfeld) im GUI vorhanden sind möchte ich diesen Hotkey nur aktiv haben, wenn man auch in genau diesem drin ist.
    GUICtrlGetState() liefert leider nur 80 (sichtbar und benutzbar), was mir rein gar nichts bringt. Ich müsste irgendwie auslesen, welches Item gerade aktiv ist - wie stelle ich das an?

    Vielen Dank und Grüße,
    Aquaplant

  • Es gibt Tage, da trete ich nicht ins Fettnäpfchen. Ich falle in die Friteuse.

    • Offizieller Beitrag

    CTRL+A für die Editbox (um alles zu markieren). Da aber noch weitere Elemente (z.B. Inputfeld) im GUI vorhanden sind möchte ich diesen Hotkey nur aktiv haben, wenn man auch in genau diesem drin ist.

    Wenn ich mich recht erinnere, ist Ctrl+A ein System-Hotkey, somit ist er automatisch in jedem Ctrl der Edit-Class aktiv (dazu gehören auch die Input).
    Um das zu verhindern musst du auch auf Systemebene eingreifen und das mittels Hook abfangen.

    • Offizieller Beitrag

    Um das zu verhindern musst du auch auf Systemebene eingreifen und das mittels Hook abfangen.

    Globale Hotkeys werden ignoriert, wenn man Acceleratoren benutzt.
    Im Grunde ist das ja auch hooking, aber das übernimmt AutoIt für uns und zwar ohne viel Aufwand.

    Im Beispiel wird Ctrl+a für das 1. Input und Ctrl+b für das 2. Input verwendet, um den Inhalt zu selektieren. .
    Solange die GUI den Focus hat, gelten die Hotkeys nur für diese.
    Wenn die GUI nicht den Focus hat, gelten die Globalen HotKeys.

    Acceleratoren werden meiner Meinung nach viel zu wenig benutzt, obwohl sie sehr praktisch sind.
    Ein Hotkey in einem Scirpt sollte auch nur für die drin verwendete GUI gelten.
    HotKeySet verwende ich nur, wenn es nicht anders geht oder ich wirklich einen systemweiten brauche.