Kurze Frage zu _Ispressed

  • Hey,

    ich habe bei _Ispressed ein kleines Verständnisproblem:

    Also ich hab 2 Inputboxen, drücke ich + und der Fokus liegt auf Input1 erscheint eine Nachricht, drücke ich - und der Fokus liegt auf Input2, dann erscheinte eine andere Nachricht.

    Soweit so gut, die Sache läuft.

    Problem: Die Inputboxen werden durch die Eingabe von jeweiles +/- in ihrem Inhalt verändert und das ist nichts erwünscht.
    _IsPressed soll also praktisch nichts durchlassen, sondern einfach nur die hinterlegte Funktion aufrufen.

    Bin mir nicht ganz sicher ob das mit _IsPressed überhaupt funktioniert, daher dieser Thread.

    Alternativ: Man schließt die definierten Tasten von _IsPressed bei den möglichen Eingaben ins Input aus - ist aber irgendwie wieder ziemlich kompliziert für ein im Prinzip ziemlich einfaches Problem.

    Gruß nuts

  • Hallo nuts,
    bitte poste doch mal Dein Script,
    damit man sich da was drunter vorstellen kann.

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • Ok hier mal ein Beispiel ohne auf den Fokus (das ist erstmal auch nicht das Problem) einzugehen

    Spoiler anzeigen
    [autoit]


    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 438, 193, 133)
    $Input1 = GUICtrlCreateInput("Input1", 48, 56, 129, 24)
    $Input2 = GUICtrlCreateInput("Input2", 232, 56, 161, 24)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    Dllopen("user32.dll")
    While 1
    _test()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd
    DllClose("user32.dll")

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

    func _test()
    if _IsPressed("6B") then MsgBox(1, "", "Input1")
    if _IsPressed("6D") then MsgBox(1, "", "Input2")
    endfunc

    [/autoit]

    Ist der Fokus über einem der Inputs wird eben +/- ins Inputfeld geschrieben und das wollte ich gerne vermeiden.

    @HotkeySet: Ich dachte das geht nur global fürs ganze Skript?

  • Halo nuts,

    dein Beispiel auf HotKeySet umgebaut sieht so aus:

    Spoiler anzeigen
    [autoit]

    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <Misc.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 438, 193, 133)
    $Input1 = GUICtrlCreateInput("Input1", 48, 56, 129, 24)
    $Input2 = GUICtrlCreateInput("Input2", 232, 56, 161, 24)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;Dllopen("user32.dll")
    HotKeySet ("k" ,"_testk" )
    HotKeySet ("m" ,"_testm" )

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

    While 1
    ;_test()
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd
    ;DllClose("user32.dll")

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

    func _test()
    if _IsPressed("6B") then MsgBox(1, "", "Input1")
    if _IsPressed("6D") then MsgBox(1, "", "Input2")
    endfunc

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

    func _testk()
    MsgBox(1, "", "k was pressed")
    HotKeySet ("k" )
    endfunc

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

    func _testm()
    MsgBox(1, "", "m was pressed")
    HotKeySet ("m" )
    endfunc

    [/autoit]

    Hotkey kann man auch wieder ausschalten, bzw. je nach Bedarf auch andere Funktionen aufrufen,

    mfg (Auto)Bert

  • Hey,

    wie schalte ich Hotkeyset denn wieder aus?
    Mein ganzes Skript ist leider auf dem Arbeits-Pc (kein i.net erlaubt, sonst hätt ichs von dort schnell reingestellt).

    Ich hab verschiedene Gui-Fenster und will die Hotkey/IsPressed Aktion nur in einem bestimmten aufrufen.
    Ok man könnte abfagen ob das Fenster existiert/aktiv ist, aber vielleicht gibts noch was bessere?

    edit \ anders gefragt: _IsPressed lässt die gedrückte Taste immer durch?