Bitte um Hilfe bei meinem kleinen "Projekt"!

  • So nachdem meine Hilfedatei nun wieder geht zum Hauptproblem.
    Ich habe gestern versucht eine Box mit 6 Buttons und 1 Label zu erstellen.
    Wenn ein Button geklickt wird,ändert sich jeweils der Text im Label. ($Label1)
    Danach wird der Text wieder zu $order.
    Feinheiten und auch Winwaitactive ... folgen später es geht erstmal darum dass ich einen error bekomme wenn ich dieses Script starten möchte und ichw eiss nicht warum.
    Die Buttons sollten doch nun schon sichbar sein egal ob sie was bewirken oder nicht.
    Ich hoffe ihr findet den Fehler denn ich finde ihn leider nicht. :pinch:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Dim $Case1
    Dim $Case2
    Dim $Case3
    Dim $Case3.1
    Dim $Case4
    Dim $Case5

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

    $Form1 = GUICreate("PassionofAnimes a.k.a Hydralisks Manager Tool", 640, 450, 193, 125)
    $Label1 = GUICtrlCreateLabel("Programm is ready", 30, 430, 199, 17)
    $Button1 = GUICtrlCreateButton("Anime Index", 92, 60, 200, 75, 0)
    $Button2 = GUICtrlCreateButton("Listen my Music", 342, 60, 200, 75, 0)
    $Button3 = GUICtrlCreateButton("Run Warcraft 3", 92, 180, 200, 75, 0)
    $Button3.1 = GUICtrlCreateButton("Run Banlist", 342, 180, 200, 75, 0)
    $Button4 = GUICtrlCreateButton("Run SWBF 2", 92, 300, 200, 75, 0)
    $Button5 = GUICtrlCreateButton("Shutdown", 342, 300, 200, 75, 0)
    $order = "Waiting for orders"

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE Then
    Exit
    ;----------------------------------------------------------------------------------------------
    Case $Button1 Then
    $Case1 = True
    Case $Case1 = True Then
    GUICtrlSetData($Label1, "Opening Anime Index ...")
    If $Case1 = True Then
    $Case1 = False
    EndIf

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

    Sleep(500)

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

    If $Case1 = False Then
    GUICtrlSetData($Label1, $order)
    EndIf
    ;----------------------------------------------------------------------------------------------
    Case $Button2 Then
    $Case2 = True
    Case $Case2 = True Then
    GUICtrlSetData($Label1, "Opening Listen my Music ...")
    If $Case2 = True Then
    $Case2 = False
    EndIf

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

    Sleep(500)

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

    If $Case2 = False Then
    GUICtrlSetData($Label1, $order)
    EndIf
    ;----------------------------------------------------------------------------------------------
    Case $Button3 Then
    $Case3 = True
    Case $Case3 = True Then
    GUICtrlSetData($Label1, "Running Warcraft 3 ...")
    If $Case3 = True Then
    $Case3 = False
    EndIf

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

    Sleep(500)

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

    If $Case3 = False Then
    GUICtrlSetData($Label1, $order)
    EndIf
    ;----------------------------------------------------------------------------------------------
    Case $Button3.1 Then
    $Case3.1 = True
    Case $Case3.1 = True Then
    GUICtrlSetData($Label1, "Running Banlist ...")
    If $Case 3.1 = True Then
    $Case 3.1 = False
    EndIf

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

    Sleep(500)

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

    If $Case3.1 = False Then
    GUICtrlSetData($Label1, $order)
    EndIf
    ;----------------------------------------------------------------------------------------------
    Case $Button4 Then
    $Case4 = True
    Case
    $Case4 = True Then
    GUICtrlSetData($Label1, "Running SWBF 2 ...")
    If $Case4 = True Then
    $Case4 = False
    EndIf

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

    Sleep(500)

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

    If $Case4 = False Then
    GUICtrlSetData($Label1, $order)
    EndIf
    ;----------------------------------------------------------------------------------------------
    Case $Button5 Then
    $Case5 = True
    Case $Case5 = True Then
    GUICtrlSetData($Label1, "Turning off ...")
    If $Case5 = True Then
    $Case5 = False
    EndIf

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

    Sleep(500)

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

    If $Case5 = False Then
    GUICtrlSetData($Label1, $order)
    EndIf
    ;----------------------------------------------------------------------------------------------

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

    EndSwitch
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von Hydralisk (20. November 2008 um 16:47)

  • Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("PassionofAnimes a.k.a Hydralisks Manager Tool", 640, 450, 193, 125)
    $Label1 = GUICtrlCreateLabel("Programm is ready", 30, 430, 199, 17)
    $Button1 = GUICtrlCreateButton("Anime Index", 92, 60, 200, 75, 0)
    $Button2 = GUICtrlCreateButton("Listen my Music", 342, 60, 200, 75, 0)
    $Button3 = GUICtrlCreateButton("Run Warcraft 3", 92, 180, 200, 75, 0)
    $Button31 = GUICtrlCreateButton("Run Banlist", 342, 180, 200, 75, 0)
    $Button4 = GUICtrlCreateButton("Run SWBF 2", 92, 300, 200, 75, 0)
    $Button5 = GUICtrlCreateButton("Shutdown", 342, 300, 200, 75, 0)
    $order = "Waiting for orders"

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUICtrlSetData($Label1, "Opening Anime Index ...")
    Sleep(500)
    GUICtrlSetData($Label1, $order)
    Case $Button2
    GUICtrlSetData($Label1, "Opening Listen my Music ...")
    Sleep(500)
    GUICtrlSetData($Label1, $order)
    Case $Button3
    GUICtrlSetData($Label1, "Running Warcraft 3 ...")
    Sleep(500)
    GUICtrlSetData($Label1, $order)
    Case $Button31
    GUICtrlSetData($Label1, "Running Banlist ...")
    Sleep(500)
    GUICtrlSetData($Label1, $order)
    Case $Button4
    GUICtrlSetData($Label1, "Running SWBF 2 ...")
    Sleep(500)
    GUICtrlSetData($Label1, $order)
    Case $Button5
    GUICtrlSetData($Label1, "Turning off ...")
    Sleep(500)
    GUICtrlSetData($Label1, $order)
    EndSwitch
    WEnd

    [/autoit]

    Bei Switch-Case Sachen brauchst du kein "Then", das gibts nur bei If Schleifen.

  • Außerdem dürfen, soweit ich weiß, keine Punkte in Variablennamen sein ;)
    Siehe Z. 5, 14, 69, 70, 71, 73, 74 und 79 =)
    Die Punkte braucht man bei Objekten,

    $object = ObjCreate( 'shell.application' )
    $object.NameSpace( $ordner ) ; <--- $object.anweisung
    [....]

    mfg limette

    There are only 10 types of people in the world:
    Those who understand binary - and those who don't.

  • Hi,
    das mit der For-Schleife vergiss erstmal. Ich habe es mal etwas kürzer geschrieben.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>

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

    $Form1 = GUICreate("PassionofAnimes a.k.a Hydralisks Manager Tool", 640, 450, 193, 125)
    $Label1 = GUICtrlCreateLabel("Programm is ready", 30, 430, 199, 17)
    $Button1 = GUICtrlCreateButton("Anime Index", 92, 60, 200, 75, 0)
    $Button2 = GUICtrlCreateButton("Listen my Music", 342, 60, 200, 75, 0)
    $Button3 = GUICtrlCreateButton("Run Warcraft 3", 92, 180, 200, 75, 0)
    $Button4 = GUICtrlCreateButton("Run Banlist", 342, 180, 200, 75, 0)
    $Button5 = GUICtrlCreateButton("Run SWBF 2", 92, 300, 200, 75, 0)
    $Button6 = GUICtrlCreateButton("Shutdown", 342, 300, 200, 75, 0)
    $order = "Waiting for orders"

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

    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    ;----------------------------------------------------------------------------------------------
    Case $Button1
    _Lable("Opening Anime Index ...",$order)
    ;----------------------------------------------------------------------------------------------
    Case $Button2
    _Lable("Opening Listen my Music ...",$order)
    ;----------------------------------------------------------------------------------------------
    Case $Button3
    _Lable("Running Warcraft 3 ...",$order)

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

    ;----------------------------------------------------------------------------------------------
    Case $Button4
    _Lable("Running Banlist ...",$order)

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

    ;----------------------------------------------------------------------------------------------
    Case $Button5
    _Lable( "Running SWBF 2 ...",$order)

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

    ;----------------------------------------------------------------------------------------------
    Case $Button6
    _Lable( "Turning off ...",$order)
    ;----------------------------------------------------------------------------------------------

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

    EndSwitch
    WEnd

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

    Func _Lable($fvar,$forder)

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

    GUICtrlSetData($Label1, $fvar)
    Sleep(500)
    GUICtrlSetData($Label1, $forder)
    Return $fvar
    EndFunc

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

    MfG
    Der_Doc

  • So danke erstmal für die vielen Antworten man kann es nun wenigstens sehen. :thumbup:
    Zurzeit sitze ich an einem anderen Problemen und zwar:
    Die Shutdown Funktion.

    [autoit]

    MsgBox(1, "Shutdown", "Please press ok to continue or abort to cancel", "", "")

    [/autoit]


    da wollte ich einbauen

    [autoit]

    if return 1 then
    Shutdown (1)

    [/autoit]

    aber leider funktioniert der Befehlt return nicht ganz so wie ich mir das vorgestellt habe.
    Edit: habe ihn nun in der Hilfe gefunden aber kapiere es trotzdem nicht. :pinch:
    Gibts da sowas wie _IsPressed nur mit Buttons eben?
    Damit ich das dann mit If lösen kann.
    Joa und wenn es eben (Abbrechen)3 zurück sendet nicht runterfahren ist ja klar...

    3 Mal editiert, zuletzt von Hydralisk (14. August 2008 um 08:10)

    • Offizieller Beitrag

    Return ist dazu da, den Wert einer Variablen (oder ein Array) an die aufrufende Funktion (bzw. das Hauptprogramm) zurückzugeben. Willst Du die Rückgabe einer Funktion oder eines AutoIt-Befehls (was im Prinzip auch nur eine Funktion ist) auswerten, musst Du den Wert einer Variablen zuweisen:

    [autoit]

    $rc = MsgBox(1, "Shutdown", "Please press ok to continue or abort to cancel")

    [/autoit]

    anschließend kannst Du eine Abfrage mit dieser Variablen ausführen:

    [autoit]

    If $rc = 1 Then ...

    [/autoit]

    oder Du benutzt die Kurzform:

    [autoit]

    If MsgBox(1, "Shutdown", "Please press ok to continue or abort to cancel") = 1 Then ...

    [/autoit]
  • Danke dir Oscar. ^^

    Spoiler anzeigen
    [autoit]

    $Shutdownreturn = MsgBox(1, "Shutdown", "Please press ok to continue or abort to cancel", "", "")
    If $Shutdownreturn = 1 Then
    Shutdown(1)
    EndIf

    [/autoit]


    Gibt es bei AutoIt eigentlich einen Befehl mit dem man einen Button mit bestimmtem Namen drücken kann?
    Bezieht sich nun hier auf das starten eines spiels durch sein Spielmenü. ( SWBF2 wer es kennt :) )
    In der Hilfe habe ich

    [autoit]

    _GUICtrlButton_Click($hWnd)

    [/autoit]


    gefunden aber verstehe das nicht wirklich .
    Was ist denn ($hWnd) ? Da steht zwar "Handle to the control" aber ich kapier es trotzdem nicht. :pinch:
    Eine Funktion wie Winwaitactive wo man den Fensternamen angeben kann nur mit Button und Buttonname wäre wirklich klasse aber ich weiss leider nicht nach was ich suchen muss.
    Ich hoffe es stört euch nicht dass ich euch hier mit Fragen bombadiere. :S

    5 Mal editiert, zuletzt von Hydralisk (14. August 2008 um 20:35)

  • für was die UDF?

    Du willst einen Button drücken in einem Fenster das du selbst gemacht hast?

    Spoiler anzeigen
    [autoit]

    Opt("GUIOnEventMode", 1)
    $gui = GUICreate(100,100)
    $button = GUICtrlCreateButton("Test", 10, 10)
    GUICtrlSetOnEvent($button, "_test")
    GUISetState()
    Sleep(1000)
    ControlClick($gui, "", $button, "left")
    While 1
    WEnd
    Func _test()
    MsgBox(0, "Test", "Das ist ein Test")
    Exit
    EndFunc

    [/autoit]


    Oder ist das Spielemenu vom Hersteller? Dann einfach mit AutoIt window Info die ID des Buttons auslesen und dazu noch den Titel des Fensters und auch die ControlClick funktion verwenden. Mal als Beispiel:

    [autoit]

    ControlClick("SWBF2 - Menu", "", 12)
    ;alles natürlich frei erfunden, wenn du das Fenster noch genauer spezifizieren willst musst du einfach noch einen TextTeil von dem Fenster mit angeben

    [/autoit]

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

    Einmal editiert, zuletzt von FireFlyer (15. August 2008 um 08:21)

  • So ich habe mir dir Funktion mal angeschaut:

    [autoit]

    WinActivate ("Hauptmen")
    $SWBFCheck = ControlClick ("Hauptmen", "Spiel starten", 1)
    #cs Die Buttons sind von oben nach unten angeordnet genau deswegen komme ich damit auch nicht klar ~_~.
    Der Button den ich klicken möchte ist der oberste also Spiel starten.
    #ce
    If $SWBFCheck = 1 Then ; ...

    [/autoit]

    Kann mir jemand von euch vielleicht ein Tool empfehlen mit dem ich die ControlID eine Buttons lesen kann? :(
    Hier das Bild!

  • AutoIt Window Info!

    Start-->Programme-->Autoit-->Au3 Windown Info

    So oder so ähnlich

    Und schau mit dem Titel und vorhandenem Text im Fenster auch da nach ;)

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D

  • Das Tool hab ich sogar als Verknüpfung auf meinem Desktop . :pinch:
    Naja leider zeigt es mir nichts an,warum auch immer. :S
    Wenn es nicht anders geht löse ich es einfach mit Koordinaten was ich aber eigentlich eher ungern machen möchte denn ich will wissen wie es anders geht.
    Bild

  • Naja wenns so nicht geht musst du es halt über die Coordinaten machen das Fenster müsste aber auf jeden Fall einen Titel haben oder?

    Weil dann nimmst du die relativen Daten also nicht absolut zum Desktop sondern zum Fenster, das sollte kein Problem sein da das Fenster ohnehin unveränderbar ist (not resizeable).

    MFG FireFlyer

    *Paradox ist, wenn man sich im Handumdrehen den Fuss bricht* :D