Frage zu HotKey

  • Hallo zusammen,

    ich habe eine Frage zu den HotKeys.
    Folgendes habe ich vor: ich habe eine GUI, die ich mit HotKeys versehen möchte. Das funktioniert auch soweit ganz gut.
    Aber wenn dieses Programm läuft, stehen die HotKey auch in allen anderen Programmen zur Verfügung und "überschreibeben" die HotKeys der anderen Programme.

    Gibt es eine Möglichkeit die HotKeys so zu definieren, das diese nur in meinem Programm funktionieren und sobald ich zum anderen Programm gewechselt habe die nicht mehr funktionieren?

    Hier ein Muster:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    HotKeySet("^a", "Test")
    GUICreate("Test")
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ExitLoop
    EndIf
    WEnd

    Func Test()
    MsgBox (0, 'Test', 'Eine Testausgabe!')
    EndFunc

    [/autoit]
  • Hallo,

    ich habe das in mein Beispiel eingebaut und ausprobiert.
    Jetzt funktioniert das HotKey überhaupt nicht mehr solange mein Programm läuft.
    Auch wenn das funktioniere würde, wäre es dann nicht so, dass die HotKey von anderen Programmen zur Laufzeit meines Programms von meinen HotKey überschrieben werden?
    Gibt es keine andere Möglichkeit?

    [autoit]

    #include <GUIConstants.au3>

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

    $MeineGUI = GUICreate("HotKey Test")
    HotKeySet("^a", "Test")
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
    ExitLoop
    EndIf
    WEnd

    Func Test()
    If WinGetTitle("") = $MeineGUI Then
    MsgBox (0, 'Test', 'Eine Testausgabe!')
    EndIf
    EndFunc

    [/autoit]
  • [autoit]

    #include <GUIConstants.au3>

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

    Global $h_gui = GUICreate("HotKey Test")
    HotKeySet("^a", "Test")
    GUISetState()

    While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    Func Test()
    If WinGetHandle("") = $h_gui Then MsgBox (0, 'Test', 'Eine Testausgabe!')
    EndFunc

    [/autoit]
  • Danke für den Muster, aber das eigentliche Problem ist damit nicht gelöst.
    Das Problem ist:
    Wenn ich in meinem Programm HotKey Ctrl+A definiere und mein Programm laufen lasse, funktioniert dieses HotKey in anderen Programmen z.B. im Editor (Alle markieren Ctrl+A) nicht.
    Gibt es dafür eine Abhilfe?

  • hi

    nen bischen hirnschmalz und hilfe lesen bzw im forum suchen hätte deine antwort zutage geförtdert;):


    [autoit]

    #include <GUIConstants.au3>

    Global $h_gui = GUICreate("HotKey Test")
    HotKeySet("^a", "Test")
    GUISetState()

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

    While 1
    If GUIGetMsg() = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    Func Test()
    If WinGetHandle("") = $h_gui Then
    _winaktivfunktion()
    Else
    HotKeySet("^a")
    Send("^a")
    HotKeySet("^a","Test")
    EndIf
    EndFunc

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

    Func _winaktivfunktion()
    MsgBox(0,"","gui war aktiv als der hotkey gedrückt wurde ;)")
    EndFunc

    [/autoit]


    mfg

    derda

  • Danke, dein Muster funktioniert so wie ich das brauche.
    Jetzt muss ich sehen das ich das Ganze verstehe und in mein eigentliches Programm einbaue.