GUI funktioniert nicht..was ist falsch?

  • Hi Freunde, hab ne ganz einfache gui geschrieben, mit 4 tasten..... 3tasten wo ich ne ausführung hinterlege, und eine zum schliessen.
    aber sie wird nicht mal angezeigt.... da funtzt nix. gibts doch nicht. ideen eurerseits? Ich wäre euch dankbar.

    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $Start

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

    Opt("GUIOnEventMode", 1)

    GUICreate("Name:Testgui",800,100,0,0)

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

    GUICtrlCreateButton ("exe1",0,20,180,50)
    GUICtrlSetOnEvent(-1, '_x1')
    GUICtrlCreateButton ("exe2",200,20,180,50)
    GUICtrlSetOnEvent(-1, "_x2")
    GUICtrlCreateButton ("exe3",400,20,180,50)
    GUICtrlSetOnEvent(-1, "_x3")
    GUICtrlCreateButton ("beenden",600,20,180,50)
    GUICtrlSetOnEvent(-1, "_x4")

    GUISetState(@SW_SHOW)

    Func _x1()
    $Start = 1
    EndFunc

    Func _x2()
    $Start = 2
    EndFunc

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

    Func _x3()
    $Start = 3
    EndFunc

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

    Func _x4()
    Exit
    EndFunc


    If $Start = 1 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")

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

    EndIf

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

    If $Start = 2 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")

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

    EndIf

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

    If $Start = 3 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")

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

    EndIf

    [/autoit]

    2 Mal editiert, zuletzt von Der_Storch (11. Januar 2010 um 22:44)

  • mach eine while schleife rein:

    Spoiler anzeigen
    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $Start

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

    Opt("GUIOnEventMode", 1)

    GUICreate("Name:Testgui",800,100,0,0)

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

    GUICtrlCreateButton ("exe1",0,20,180,50)
    GUICtrlSetOnEvent(-1, '_x1')
    GUICtrlCreateButton ("exe2",200,20,180,50)
    GUICtrlSetOnEvent(-1, "_x2")
    GUICtrlCreateButton ("exe3",400,20,180,50)
    GUICtrlSetOnEvent(-1, "_x3")
    GUICtrlCreateButton ("beenden",600,20,180,50)
    GUICtrlSetOnEvent(-1, "_x4")

    GUISetState(@SW_SHOW)

    Func _x1()
    $Start = 1
    EndFunc

    Func _x2()
    $Start = 2
    EndFunc

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

    Func _x3()
    $Start = 3
    EndFunc

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

    Func _x4()
    Exit
    EndFunc

    While 1 ;die while schleife
    If $Start = 1 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")

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

    EndIf

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

    If $Start = 2 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")

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

    EndIf

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

    If $Start = 3 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")

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

    EndIf
    WEnd ;while schleife zu ende

    [/autoit]

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • Hallo Der Storch,

    das geänderte Skript:

    Spoiler anzeigen
    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $Start

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

    Opt("GUIOnEventMode", 1)

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

    GUICreate("Name:Testgui",800,100,0,0)
    GUISetOnEvent($GUI_EVENT_CLOSE,"_x4") ;damit auch auf das X reagiert wird
    GUICtrlCreateButton ("exe1",0,20,180,50)
    GUICtrlSetOnEvent(-1, '_x1')
    GUICtrlCreateButton ("exe2",200,20,180,50)
    GUICtrlSetOnEvent(-1, "_x2")
    GUICtrlCreateButton ("exe3",400,20,180,50)
    GUICtrlSetOnEvent(-1, "_x3")
    GUICtrlCreateButton ("beenden",600,20,180,50)
    GUICtrlSetOnEvent(-1, "_x4")

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

    GUISetState(@SW_SHOW)
    while 1 ;im OnEventMode notwendig
    sleep(1000)
    WEnd

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

    Func _x1()
    $Start = 1
    EndFunc

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

    Func _x2()
    $Start = 2
    EndFunc

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

    Func _x3()
    $Start = 3
    EndFunc

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

    Func _x4()
    Exit
    EndFunc

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

    If $Start = 1 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")

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

    EndIf

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

    If $Start = 2 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")

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

    EndIf

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

    If $Start = 3 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")

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

    EndIf

    [/autoit]

    Kommntare sind im Skript,

    edit: zu langsam :sleeping:
    mfg (Auto)Bert

  • Es funktioniert. Sensationell. ich bin begeistert :thumbup:

    dank euch, manchmal sind es nur kleinigkeiten die ich nicht sehe....

  • stimmt, da sollte man dann noch die if durch ein switch oder select event austauschen

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • puh, ich bin ja schon froh dass ich die gui hinbekommen hab (auch dank eurer hilfe). mit switch oder select kenn ich mich noch nicht so aus. es sei denn es geht einfach, dass ihr es mir postet, kann ich sicher nicht verlangen hier im forum, oder?
    dennoch guter hinweis mit dem prozessor, thx

  • kann ich sicher nicht verlangen hier im forum, oder?

    doch könntest du shcon, obs dir jemand postet is aber die andere frage :D


    ich tus mal nicht weil die andere lösung besser is ;)

  • Zu früh gefreut ;( ;(

    wenn ich den button klicke, dann führt er meine ausführungen immer wieder aus, ich will aber, dass er sie nur einmal ausführt, sobald ich auf den button x1 klicke. und wenn ich auf x2 klicke dann soll er nur einmal die ausführung ausführen.

    mist, die schleife war doch nicht die richtige lösung...*schnief* noch andere ideen?

    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $Start

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

    Opt("GUIOnEventMode", 1)

    GUICreate("Name:Testgui",800,100,0,0)

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

    GUICtrlCreateButton ("exe1",0,20,180,50)
    GUICtrlSetOnEvent(-1, '_x1')
    GUICtrlCreateButton ("exe2",200,20,180,50)
    GUICtrlSetOnEvent(-1, "_x2")
    GUICtrlCreateButton ("exe3",400,20,180,50)
    GUICtrlSetOnEvent(-1, "_x3")
    GUICtrlCreateButton ("beenden",600,20,180,50)
    GUICtrlSetOnEvent(-1, "_x4")

    GUISetState(@SW_SHOW)

    Func _x1()
    $Start = 1
    EndFunc

    Func _x2()
    $Start = 2
    EndFunc

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

    Func _x3()
    $Start = 3
    EndFunc

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

    Func _x4()
    Exit
    EndFunc

    While 1 ;die while schleife
    If $Start = 1 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")

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

    EndIf

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

    If $Start = 2 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")

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

    EndIf

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

    If $Start = 3 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")

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

    EndIf
    WEnd ;while schleife zu ende

    [/autoit]
  • ich weiss nicht welche lösung besser is, hatte aber langeweile und hab eins mit select gescriptet. hier:

    Spoiler anzeigen
    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $Start

    GUICreate("Name:Testgui",800,100,0,0)

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

    $bttn1 = GUICtrlCreateButton("exe1",0,20,180,50)
    $bttn2 = GUICtrlCreateButton("exe2",200,20,180,50)
    $bttn3 = GUICtrlCreateButton("exe3",400,20,180,50)
    $bttn4 = GUICtrlCreateButton("beenden",600,20,180,50)

    GUISetState(@SW_SHOW)

    Func _x1()
    $Start = 1
    EndFunc

    Func _x2()
    $Start = 2
    EndFunc

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

    Func _x3()
    $Start = 3
    EndFunc

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

    Func _x4()
    Exit
    EndFunc

    While 1 ;die while schleife
    $msg = GUIGetMsg()
    Select ; leitet das Select ein
    Case $msg = $bttn1 ;wenn button1 gedrückt wird dann...
    _x1() ;... passiert das hier (das was in der Func _x1() steht)
    Case $msg = $bttn2 ;button2 etc...
    _x2()
    Case $msg = $bttn3
    _x3()
    Case $msg = $bttn4
    _x4()
    Case $msg = $GUI_EVENT_CLOSE ;damit funktioniert das X oben rechts
    Exit
    EndSelect ; beendet das Select
    WEnd ;while schleife zu ende

    [/autoit]

    hab ein paar kommis reingemacht :D aber ich denke, das Schnitzel recht hat

    Zitat

    ich tus mal nicht weil die andere lösung besser is ;)

    er is ja schon was länger drinnen, wie ich

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • ich hab in meinem letzten post das script ein bisschen umgeschrieben, dann gehts und der cpu wird nicht belastet hier nochmal :D

    Spoiler anzeigen
    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $Start

    GUICreate("Name:Testgui",800,100,0,0)

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

    $bttn1 = GUICtrlCreateButton("exe1",0,20,180,50)
    $bttn2 = GUICtrlCreateButton("exe2",200,20,180,50)
    $bttn3 = GUICtrlCreateButton("exe3",400,20,180,50)
    $bttn4 = GUICtrlCreateButton("beenden",600,20,180,50)

    GUISetState(@SW_SHOW)

    Func _x1() ;hier drunter reinschreiben, was passieren soll z.B. eine MsgBox
    MsgBox(0,"","Button1")
    EndFunc

    Func _x2()
    MsgBox(0,"","Button2")
    EndFunc

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

    Func _x3()
    MsgBox(0,"","Button3")
    EndFunc

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

    Func _x4()
    Exit
    EndFunc

    While 1 ;die while schleife
    $msg = GUIGetMsg()
    Select ; leitet das Select ein
    Case $msg = $bttn1 ;wenn button1 gedrückt wird dann...
    _x1() ;... passiert das hier (das was in der Func _x1() steht)
    Case $msg = $bttn2 ;button2 etc...
    _x2()
    Case $msg = $bttn3
    _x3()
    Case $msg = $bttn4
    _x4()
    Case $msg = $GUI_EVENT_CLOSE ;damit funktioniert das X oben rechts
    Exit
    EndSelect ; beendet das Select
    WEnd ;while schleife zu ende

    [/autoit]

    Mfg. PCKing


    Mein PC

    CPU: AMD FX 8350 8x4.00GHz
    Ram: 8GB DDR3
    Grafikkarte: Nvidia Geforce GTX 960 (4GB)
    Festplatten: 500GB SSD 1TB HDD
    Laufwerk: Blueray RW+ Brenner

  • Hallo der Storch,

    ich habe das Skrip noch einmal geändert:

    Spoiler anzeigen
    [autoit]

    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

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

    Global $Start

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

    Opt("GUIOnEventMode", 1)

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

    GUICreate("Name:Testgui",800,100,0,0)
    GUISetOnEvent($GUI_EVENT_CLOSE,"_x4") ;damit auch auf das X reagiert wird
    GUICtrlCreateButton ("exe&1",0,20,180,50)
    GUICtrlSetOnEvent(-1, '_x1')
    GUICtrlCreateButton ("exe&2",200,20,180,50)
    GUICtrlSetOnEvent(-1, "_x2")
    GUICtrlCreateButton ("exe&3",400,20,180,50)
    GUICtrlSetOnEvent(-1, "_x3")
    GUICtrlCreateButton ("be&enden",600,20,180,50)
    GUICtrlSetOnEvent(-1, "_x4")

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

    GUISetState(@SW_SHOW)
    while 1 ;im OnEventMode notwendig
    sleep(1000)
    WEnd

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

    Func _x1()
    $Start = 1
    ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")
    EndFunc

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

    Func _x2()
    $Start = 2
    ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")
    EndFunc

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

    Func _x3()
    $Start = 3
    ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")
    EndFunc

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

    Func _x4()
    Exit
    EndFunc

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

    #cs
    If $Start = 1 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:7]")

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

    EndIf

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

    If $Start = 2 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:8]")

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

    EndIf

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

    If $Start = 3 Then

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

    ControlClick("titel", "", "[CLASS:Button;INSTANCE:9]")

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

    EndIf
    #ce

    [/autoit]

    jetzt wird bei jedem Klick in deiner Gui der enzsprechende ControlClick ausgeführt. Bei der Version vob PC_King wirdwurde nach einmal starten, der ControlClick laufend wiederholt,

    edit: sehe gerade PC_King hat von OnEvent-Modus auf MSG-Loop-Modus umgestellt, wenn du die ControlClicks in die entsprechende fun kopierst machen beide das gleiche,

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (11. Januar 2010 um 23:00)

  • Etwas OT,
    Schnitzel

    Zitat


    ist zwar auch ne funktionierende lösung aber sehr prozessorlastig. so machst du ununterbrochen if abfragen


    Sehr prozessorlastig ? Komme beim laufenden Script nicht ueber 1 Prozent und das beim Sleep(1).
    Manche Funktionen lassen sich doch nur ueber If Abfragen leoesen.???

    - MfG OpaEd

  • Hallo opaed,

    das in #2 gepostete Skript von PCKING erreicht bei mit eine Prozessorlst von über 50%, dass lag daran dass er im OnEvent-Modus in der Idle-Endlosschelife keinen sleep hatte. Übrigens ist der kleinstmögliche Sleepwert 10. Ein einfügen eines Sleep's verringert dir Last gegen null,

    mfg (Auto)Bert

  • Sehr prozessorlastig ? Komme beim laufenden Script nicht ueber 1 Prozent und das beim Sleep(1).

    wie autobert schon sagte: sleep(10) ^^
    aber in prinzip hast du recht. mit kurzen pausen geht die prozessorlast extrem hinunter. und genau das wollte ich mit "so machst du ununterbrochen if abfragen" aussagen.

    Manche Funktionen lassen sich doch nur ueber If Abfragen leoesen.???

    da haste ganz klar recht. aber wie gesagt: ununterbrochen --> schlecht


    Was sich statt dem sleep auch noch anbieten würde ist eine meiner lieblingsfunktionen: AdlibRegister
    grade im OnEventMode finde ich die absolut klasse