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
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
Dann schau dir GUISetAccelerators an.
HotKeySet("ESC","_beenden")
Func _beenden()
If WinActive("DeinFensterName") Then
WinClose("DeinFensterName")
else
EndIf
EndFunc
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.
Mit HotKeySet funktioniert das so:
#include<WindowsConstants.au3>
#include<GUIConstants.au3>
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
Func _F2_Func()
MsgBox(0, '', "hotKey gedrückt")
EndFunc
GUICreate("Test Hotkey")
GUISetState()
While GUIGetMsg()<>-3
WEnd
mit GUISetAccelerators:
Opt("GUIOnEventMode",1)
[/autoit] [autoit][/autoit] [autoit]GUICreate("Test Accel")
GUISetOnEvent(-3,"_EXIT")
$DUMMY = GUICtrlCreateDummy()
GUICtrlSetOnEvent($DUMMY,"_DUMMY_Accel")
$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")
GUISetState()
[/autoit] [autoit][/autoit] [autoit]; Accelerators festlegen
Dim $Accelerators[2][2] = [ _
["{F2}", $DUMMY], _
["{F3}", $BUTTON] _
]
GUISetAccelerators($Accelerators)
; Ende
While 1
Sleep(10000)
WEnd
Func _EXIT()
Exit
EndFunc
Func _DUMMY_Accel()
MsgBox(0, '', "Accelerator mit Dummy")
EndFunc
Func _Button_press()
MsgBox(0, '', "Button geklickt oder Accelerator für Button")
EndFunc
Danke an alle für die Hilfe
GUISetAccelerators hat bestens funktioniert!