Guisetonevent

  • Hallo,

    Ich möchte gern beim Betätigen der {Right} Taste eine Funktion ausführen.

    Ich hab mich dazu entschlossen Guisetonevent zu nutzen also so:


    Spoiler anzeigen
    [autoit]

    Guisetonevent ("ID Gesucht!, "Rechts")

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

    ; ...

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

    Func Rechts()
    ; ...
    EndFunc

    [/autoit]

    Weiß jemand wie ich die SpecialID von der Nachrechtstaste nutzen kann?


    "{Right}" hab ich bereits versucht, da ist das Programm abgestürtzt

    Danke im Vorraus!

    Einmal editiert, zuletzt von Buckiuxx (12. Juni 2010 um 13:01)

  • Was willst du machen?
    Wills du eine Func ausführen sobald man die rechte Maustaste im Fenster geklickt hat?
    Das hört sich nach nem Menü an.

    Nur keine Hektik - das Leben ist stressig genug

  • ne...ich will mit der funktion ein die position eines buttons nach rechts verschieben, wenn die rechte pfeiltaste gedrückt wird

  • Zitat

    also kann man nicht einfache Befehle und Buttons nutzen wie bei case?

    *hust*

    Nein! gucke mal

    [autoit]

    _IsPressed()

    [/autoit]


    in der Hilfe nach.

    Nur keine Hektik - das Leben ist stressig genug

  • ich versteh nicht ganz was du willt, aber erstmal gehen deine Variablen so nicht.

    So wie ich es verstanden habe willst du, dass wenn man in deiner GUI dei Pfeiltaste drückt, dass eine Funktion aufgerufen wird richtig?
    Dann kannst du mit den WIndows NachrichtenCodes arbeiten.

    und war mit dem Nachrichten Code WM_KEYDOWN .

    also GUIRegisterMsg ( WM_KEYDOWN, "My_KEYDOWN" )

    dann kannst du in der My_KEYDOWN Funktion überprüfen, welche taste gedrückt wurde und dann deine Funktion aufrufen.

    Aber ließ dir die Hilfe zu GUIRegisterMsg nochmal durch.

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • genau...wenn die pfeiltaste gedrückt wird soll eine funktion ausgeführt werden...

    woher weiß wm_keydown welche taste ich haben will?

    ich les dann ma

  • hier mal ein Bsp. Aber ich hab gerade festestellt eauf pfeiltasten reagiert das ganze gar nicht hmm :pinch:

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode",1)
    GUICreate("Test",200,200)
    GUISetOnEvent(-3,"_exit")
    GUIRegisterMsg ( 0x0100, "My_KEYDOWN" )
    GUISetState()

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

    While 1
    Sleep(100)
    WEnd

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

    Func My_KEYDOWN($hWndGUI, $MsgID, $WParam, $LParam)
    MsgBox(0,"",$hWndGUI & " " & $MsgID & " " & $WParam & " " & $LParam)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    und hier noch eine Funktionierende lösung:

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode",1)
    GUICreate("Test",200,200)
    $dummy = GUICtrlCreateDummy()
    GUICtrlSetOnEvent(-1,"My_KEYDOWN_2")
    GUISetOnEvent(-3,"_exit")
    ;GUIRegisterMsg ( 0x0290, "My_KEYDOWN" )
    GUISetState()

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

    Dim $AccelKeys[1][2] = [["{UP}", $dummy]]
    GUISetAccelerators ($AccelKeys)

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

    While 1
    Sleep(100)
    WEnd

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

    Func My_KEYDOWN_2()
    MsgBox(0,"","Pfeiltaste wurde gedrückt")
    EndFunc

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

    Func My_KEYDOWN($hWndGUI, $MsgID, $WParam, $LParam)
    MsgBox(0,"",$hWndGUI & " " & $MsgID & " " & $WParam & " " & $LParam)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

    Einmal editiert, zuletzt von Darter (12. Juni 2010 um 12:45)

  • Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)

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

    HotKeySet("{Up}", "_Up")
    HotKeySet("{Down}", "_Down")
    HotKeySet("{Right}", "_Right")
    HotKeySet("{Left}", "_Left")

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

    Global $xPos = 190
    Global $yPos = 180

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

    GUICreate("", 625, 443, 192, 124)
    GUISetOnEvent(-3, "_Exit")
    $Button = GUICtrlCreateButton("Button1", 190, 180, 145, 65)
    GUICtrlSetOnEvent($Button, "_Clicked")
    GUISetState(@SW_SHOW)

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

    GUIRegisterMsg(0x001C, "_MY_WM_ACTIVATEAPP")
    While Sleep(100)
    WEnd

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

    Func _Right()
    $xPos += 10
    GUICtrlSetPos($Button, $xPos, $yPos)
    EndFunc ;==>_Right
    Func _Left()
    $xPos -= 10
    GUICtrlSetPos($Button, $xPos, $yPos)
    EndFunc ;==>_Left
    Func _Up()
    $yPos -= 10
    GUICtrlSetPos($Button, $xPos, $yPos)
    EndFunc ;==>_Up
    Func _Down()
    $yPos += 10
    GUICtrlSetPos($Button, $xPos, $yPos)
    EndFunc ;==>_Down

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

    Func _MY_WM_ACTIVATEAPP($hWnd, $uMsg, $wParam, $lParam)
    Switch $wParam
    Case True
    HotKeySet("{Up}", "_Up")
    HotKeySet("{Down}", "_Down")
    HotKeySet("{Right}", "_Right")
    HotKeySet("{Left}", "_Left")

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

    Case Else
    HotKeySet("{Up}")
    HotKeySet("{Down}")
    HotKeySet("{Right}")
    HotKeySet("{Left}")
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>_MY_WM_ACTIVATEAPP
    Func _Exit()
    Exit
    EndFunc ;==>_Exit
    Func _Clicked()
    MsgBox(0, "", "Button geklickt")
    EndFunc ;==>_Clicked

    [/autoit]
  • Auch ne nette Lösung

    und hier nochmal für alle Pfeiltasten

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode",1)
    GUICreate("Test",200,200)
    $dummy_UP = GUICtrlCreateDummy()
    GUICtrlSetOnEvent(-1,"UP")
    $dummy_DOWN = GUICtrlCreateDummy()
    GUICtrlSetOnEvent(-1,"DOWN")
    $dummy_LEFT = GUICtrlCreateDummy()
    GUICtrlSetOnEvent(-1,"LEFT")
    $dummy_RIGHT = GUICtrlCreateDummy()
    GUICtrlSetOnEvent(-1,"RIGHT")
    GUISetOnEvent(-3,"_exit")
    ;GUIRegisterMsg ( 0x0290, "My_KEYDOWN" )
    GUISetState()

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

    Dim $AccelKeys[4][2] = [["{UP}", $dummy_UP],["{DOWN}", $dummy_DOWN],["{LEFT}", $dummy_LEFT],["{RIGHT}", $dummy_RIGHT]]
    GUISetAccelerators ($AccelKeys)

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

    While 1
    Sleep(100)
    WEnd

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

    Func UP()
    MsgBox(0,"","Pfeiltaste nach oben wurde gedrückt")
    EndFunc

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

    Func DOWN()
    MsgBox(0,"","Pfeiltaste nach unten wurde gedrückt")
    EndFunc

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

    Func LEFT()
    MsgBox(0,"","Pfeiltaste nach links wurde gedrückt")
    EndFunc

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

    Func RIGHT()
    MsgBox(0,"","Pfeiltaste nach rechts wurde gedrückt")
    EndFunc

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

    Func My_KEYDOWN($hWndGUI, $MsgID, $WParam, $LParam)
    MsgBox(0,"",$hWndGUI & " " & $MsgID & " " & $WParam & " " & $LParam)
    EndFunc

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

    Func _exit()
    Exit
    EndFunc

    [/autoit]

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • ok...danke...

    ich glaub ich hab verstanden

    kannst du mir sagen was die zweite Funktion ist?
    erfüllt die einen Sinn?:


    Spoiler anzeigen
    [autoit]

    Func My_KEYDOWN($hWndGUI, $MsgID, $WParam, $LParam)
    MsgBox(0,"",$hWndGUI & " " & $MsgID & " " & $WParam & " " & $LParam)
    EndFunc

    [/autoit]


    Die wird doch nämlcih ga nich ausgeführt...oder verseh ich mich...

    Gruß,
    Bukiuxx
    :thumbup: :thumbup: :thumbup:

  • ja kann ich und zwar war die Wegen meines ersten Lösungsansatzes, welche ja nicht Funktioniert hat ^^. Wird natürlich nicht ausgeführt.

    Aber kuckst du hier such dir da eine der Beiden Lösungen aus ^^

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.

  • Ich kann nur dringend dazu raten keine Umlaute zu verwenden, das führt sehr häufig zu Fehlern und bei mir hat das in Varaibeln noch nie funktioniert


    hehe bist auch drauf reingefallen, das ist alles seine Signatur. Ich dachte auch erst, dass das sein Code sei, den er und zu seinem Problem postet^^

    Das finden von Rechtschreibfehlern muss sofort und unverzüglich dem Autor gemeldet werden. Das eigennützige Verwenden dieser Rechtschreibfehler ist strengstens untersagt und kann mit Freiheitsenzug bestraft werden.