Anfänger braucht Hilfe bei GUI

  • Hallo!

    Ich möchte erstmal ein ganz einfaches GUI erstellen um die Materie besser kennen zu lernen.

    Ich habe mir das so vorgestellt, das wenn ich in der Inputbox "A" oder "B" eingebe und anschließend
    auf "Start" gehe, das er mir einen mousemove auf Koordinate A oder B macht.
    Ist nichts in der Inputbox oder Falschgeschrieben(z.b.: A1)und ich drücke "Start"
    dann soll ne MSG BOX kommen, mit "Fehler".

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=C:\Users\Julian\Desktop\Hilfe.kxf
    $Form1 = GUICreate("Form1", 357, 134, 192, 124)
    $Label1 = GUICtrlCreateLabel("Mausbewegen auf", 8, 32, 92, 17)
    GUICtrlCreateInput("A", 136, 32, 97, 21)
    $Label2 = GUICtrlCreateLabel("A", 296, 24, 39, 17)
    $Label3 = GUICtrlCreateLabel("B", 296, 40, 36, 17)
    $StartButton = GUICtrlCreateButton("Start", 152, 88, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Const $Ax = 515
    Const $Ay = 170
    Const $Bx = 1200
    Const $By = 370

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg

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

    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $StartButton
    If InputBox( "A")
    then mousemove( $Ax, $Ay)
    EndIf

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

    EndSwitch
    WEnd

    [/autoit]

    Ich hoffe ihr könnt mir helfen,

    Danke vorerst GSX750F-Special

    Einmal editiert, zuletzt von GSX750F-Special (17. Februar 2011 um 11:06)

  • Also ich habs jetzt gecheckt wie man das mit GUIctrlread macht.
    Aber möchte mein Skript noch vereinfachen.

    Es muss doch die Chance geben mein Skript zum laufen zu bringen, ohne jedesmal das komplette Skript unter den THEN
    befehl zu setzen, obwohl alles gleich ist, auser 2 kleine Veränderungen mit mousemove.

    Ich hoffe ich habe mein Anliegen einigermaßen verständlich beschrieben...wenn nicht schaut auf meine Kommentare im Skript

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 259, 222, 192, 124)
    $Input1 = GUICtrlCreateInput("A oder B?", 64, 64, 121, 21)
    $Button1 = GUICtrlCreateButton("Start", 88, 136, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Const $Ax = 515
    Const $Ay = 170
    Const $Bx = 1200
    Const $By = 370

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

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

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

    Case $Input1

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

    Case $Button1
    If GUICtrlRead( $Input1) = "A" Then ; mein Skript

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

    ;;;hier kommt sonst mein skript rein welches 150Sätze besitzt;
    ;;;einzig was sich unterscheidet zwischen A und B, sind 2 Koordinaten
    ;;;fast am ende meines Skriptes

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

    ;;;wenn mann A eingibt soll er auf mousemove( $Ax, $Ay)

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

    If GUICtrlRead( $Input1) = "B" Then ;mein Skript

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

    ;;; drückt man aber B soll er das gleiche Skript ausführen, aber eben
    ;;; nur fast am Ende meines Skriptes auf mousemove( $Bx, $By) gehen

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

    EndSwitch
    WEnd

    [/autoit]
  • Ja es gibt da möglichkeiten.

    Guck dir mal an wie man mit Funktionen arbeitet.

    [autoit]


    ;die Funktion rufst du dann so auf:

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

    If GUICtrlRead( $Input1) = "A" Then
    _deinskript($Ax,$Ay)

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

    elseif GUICtrlRead( $Input1) = "B" Then
    _deinskript($Bx,$By)
    endif

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

    Func _deinskript($x,$y)
    ;hier kommt dein skript hin!
    endfunc

    [/autoit]

    Ist ungetestet aber so vom Prinzip muss es aussehen

  • so es funktioniert zwar jetzt, aber es erscheinen noch errors

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 259, 222, 192, 124)
    $Input1 = GUICtrlCreateInput("A oder B?", 64, 64, 121, 21)
    $Button1 = GUICtrlCreateButton("Start", 88, 136, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    Const $Ax = 515
    Const $Ay = 500
    Const $Bx = 1200
    Const $By = 370

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

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

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

    Case $Input1

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

    Case $Button1

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

    If GUICtrlRead( $Input1) = "A" Then
    _deinskript($Ax,$Ay)

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

    elseif GUICtrlRead( $Input1) = "B" Then
    _deinskript($Bx,$By)
    endif

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

    Func _deinskript($x,$y)

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

    sleep(1000)
    mousemove(1200, 1200)
    sleep(1000)
    mousemove($x, $y)
    sleep(1000)
    mousemove(10,1200)
    sleep(1000)

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

    endfunc

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

    EndSwitch
    WEnd

    [/autoit]
  • So gehts:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 259, 222, 192, 124)
    $Input1 = GUICtrlCreateInput("A oder B?", 64, 64, 121, 21)
    $Button1 = GUICtrlCreateButton("Start", 88, 136, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    Const $Ax = 515
    Const $Ay = 500
    Const $Bx = 1200
    Const $By = 370

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

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

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

    Case $Input1

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

    Case $Button1

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

    If GUICtrlRead($Input1) = "A" Then
    _deinskript($Ax, $Ay)

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

    ElseIf GUICtrlRead($Input1) = "B" Then
    _deinskript($Bx, $By)
    EndIf

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

    EndSwitch
    WEnd

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

    Func _deinskript($x, $y)

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

    Sleep(1000)
    MouseMove(1200, 1200)
    Sleep(1000)
    MouseMove($x, $y)
    Sleep(1000)
    MouseMove(10, 1200)
    Sleep(1000)

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

    EndFunc ;==>_deinskript

    [/autoit]

    Und bitte für Quellcode die Spoiler verwenden ;)

  • Joar ist klar, dass da errors erscheinen, sinnvoll für die Zukunft wäre es im übrigen wenn du die errors auch posten oder beschreiben könntest.

    Funktionen dürfen nicht in Schleifen definiert werden. Setz die ganze Funktion (Zeile 36-46) mal ans Ende des Scripts.

    EDIT: Da war mein Mittagessen wieder schneller... ^^

  • Hallo GSX750F-Special,

    herzlich willkommen im Forum und viel Spass mit AutoIt.

    Hier kannst du dir die deutsche Hilfe herunterladen.
    Hier gibt es ein AutoIt-Tutorial: http://wiki.autoit.de/wiki/index.php/TutorialSehr hilfreich ist auch das Buch von peethebee

    und jetzt zu deiner Frage, eigentlich sollten dei Fehlermeldungen eindeutig sein. Nimm einfach die func aus der Schleife und erstelle sie danach,

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 259, 222, 192, 124)
    $Input1 = GUICtrlCreateInput("A oder B?", 64, 64, 121, 21)
    $Button1 = GUICtrlCreateButton("Start", 88, 136, 75, 25, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    Const $Ax = 515
    Const $Ay = 500
    Const $Bx = 1200
    Const $By = 370

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

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

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

    Case $Input1

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

    Case $Button1

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

    If GUICtrlRead($Input1) = "A" Then
    _deinskript($Ax, $Ay)

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

    ElseIf GUICtrlRead($Input1) = "B" Then
    _deinskript($Bx, $By)
    EndIf

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

    EndSwitch
    WEnd

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

    Func _deinskript($x, $y)

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

    Sleep(1000)
    MouseMove(1200, 1200)
    Sleep(1000)
    MouseMove($x, $y)
    Sleep(1000)
    MouseMove(10, 1200)
    Sleep(1000)

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

    EndFunc ;==>_deinskript

    [/autoit]

    Edit: dein Nich lässt auf ein schönes Hobby schliessen

    Edit2: man sollte wirklich alle Infos lesen die man bekommt, aber bei dem Namen und der Überschrift => Textbasteine.EXE => Grosse Hilfe => Clibboard und dann hier noch eingefügt

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (16. Februar 2011 um 17:39)

  • So jetzt funktioniert alles so wie es soll,
    ich bedanke mich bei euch für die Hilfe.

    Und ja mein Nick ist unter anderem ein Hobby von mir,
    naja noch 12Tage dann geht de neue Saison los ;)

    Also nochmals vielen Dank!