Hotkeys nur wenn Fenster im vordergrund ist?

  • Hallo ich suche nach einer einfachen Lösung für mein Problem --> die HotKeys sollten nur funktionieren wenn das Fenster im vordergrund und aktiviert ist.
    Hat da jemand eine Idee?

    Danke im Voraus
    mfg. Andi

  • [autoit]


    HotKeySet("ESC","_beenden")
    Func _beenden()
    If WinActive("DeinFensterName") Then
    WinClose("DeinFensterName")
    else
    EndIf
    EndFunc

    [/autoit]

    Ist natürlich die abgespeckte Variante um die klar zu machen wie man es machne könnte.

  • r1flex: Blödsinn.
    Denn: Der Sinn von Hotkeys-nur-wenn-Fenster-aktiv ist doch, dass man, wenn das Fenster inaktiv ist, trotzdem die Taste(-nkombination) benutzen kann.
    Also GUISetAccelerators oder aber in einer Schleife je nach Aktivität des Fensters HotKeySet.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Mit HotKeySet funktioniert das so:

    Spoiler anzeigen
    [autoit]

    #include<WindowsConstants.au3>
    #include<GUIConstants.au3>

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

    GUIRegisterMsg($WM_ACTIVATEAPP,"_MY_WM_ACTIVATEAPP")

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

    Func _MY_WM_ACTIVATEAPP($hWnd, $uMsg, $wParam, $lParam)
    Switch Number($wParam)
    Case 0
    HotKeySet("{F2}")
    Case Else
    HotKeySet("{F2}","_F2_Func")
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc

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

    Func _F2_Func()
    MsgBox(0, '', "hotKey gedrückt")
    EndFunc

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

    GUICreate("Test Hotkey")
    GUISetState()
    While GUIGetMsg()<>-3
    WEnd

    [/autoit]


    mit GUISetAccelerators:

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode",1)

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

    GUICreate("Test Accel")
    GUISetOnEvent(-3,"_EXIT")

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

    $DUMMY = GUICtrlCreateDummy()
    GUICtrlSetOnEvent($DUMMY,"_DUMMY_Accel")

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

    $BUTTON = GUICtrlCreateButton("DrückMich",10,10,100,30)
    GUICtrlSetOnEvent($BUTTON,"_Button_press")
    GUICtrlSetTip(-1,"Drück F3 für diesen Button oder auch mal F2 für das Dummycontrol")

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

    GUISetState()

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

    ; Accelerators festlegen
    Dim $Accelerators[2][2] = [ _
    ["{F2}", $DUMMY], _
    ["{F3}", $BUTTON] _
    ]
    GUISetAccelerators($Accelerators)
    ; Ende

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

    While 1
    Sleep(10000)
    WEnd

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

    Func _EXIT()
    Exit
    EndFunc

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

    Func _DUMMY_Accel()
    MsgBox(0, '', "Accelerator mit Dummy")
    EndFunc

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

    Func _Button_press()
    MsgBox(0, '', "Button geklickt oder Accelerator für Button")
    EndFunc

    [/autoit]