Warum bleibt das fenster nicht?

  • [autoit]

    #include <GUIConstantsEx.au3>

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

    _abfragebox ("Programme")
    Func _abfragebox($sTitle)
    ;diese abfragebox macht soweit das sie RAR namen kopiert & Samples können geläscht werden
    GUICreate($sTitle, 500, 500)
    ;BUTTONS
    GUICtrlCreateLabel("Hier die gewünschten Programme auswählen und dann FERTIG drücken", 10, 10)
    $1 = GUICtrlCreateCheckbox("ICQ 6.5", 11, 40)
    $2 = GUICtrlCreateCheckbox("Firefox", 11, 70)
    $3 = GUICtrlCreateCheckbox("Divx", 11,100)
    $4 = GUICtrlCreateCheckbox("Java", 11,130)
    $ok = GUICtrlCreateButton("FERTIG", 150, 460, 60, 30)
    $exit = GUICtrlCreateButton("Exit", 250, 460, 60, 30)
    GUISetState() ; GERBAUCHT damit GUI angezeigt wird
    While 1
    $msg = GUIGetMsg()
    If $msg = -3 Then ; abfrage für den X button
    Exit
    EndIf
    ;IF für OK button
    If $msg = $ok Then
    If GUICtrlRead($1) = $GUI_CHECKED Then
    ;install ICQ6.5
    MsgBox (0,"Wird installiert","ICQ 6.5",5)
    EndIf
    If GUICtrlRead($2) = $GUI_CHECKED Then
    ;install Firefox
    MsgBox (0,"Wird installiert","FIREFOX",5)
    Endif
    If GUICtrlRead($3) = $GUI_CHECKED Then
    ;install Divx
    MsgBox (0,"Wird installiert","Divx",5)
    Endif
    If GUICtrlRead($4) = $GUI_CHECKED Then
    ;install Java
    MsgBox (0,"Wird installiert","JAVA",5)
    Endif
    Else
    GUIDelete($sTitle)
    EXitLoop
    EndIf
    ;If für exit button
    If $msg = $exit Then
    Exit
    EndIf
    WEnd
    EndFunc

    [/autoit]

    Warum verschwindet das Fenster wieder direkt?
    obwohl ich ein While eingebaut habe?

    MFG: BLacky911

    Kleiner AutoIt Lehrling :)

    2 Mal editiert, zuletzt von blackdeath911 (14. Juni 2009 um 18:31)

  • Ohne jetzt das script zu öfnnen...:
    msg wird entweder $exit oder -3 sein, deshalb pack mal direkt unter guigetmsg() eine msgbox:
    msgbox(0,"",$msg)
    <gruß

    edit: ich geb dem gui immer ne var also $gui = guicreate
    dann guisetstate(@sw_show,$gui)
    da kann man dann auch nix falsch machen^^

  • Wegen dem:

    Spoiler anzeigen
    [autoit]

    Else
    GUIDelete($sTitle)
    EXitLoop

    [/autoit]


    Genau das umgekehrte, was Dönn3y meinte -> Die Gui hat noch dutzend andere Notification-Codes die du mit deiner If abfrage nicht abdeckst...

    Lösch einfach das Else und voilla es sollte gehen..

  • [autoit]

    If $msg = $ok Then
    GUIDelete($sTitle)

    [/autoit]

    bzw. wenn du es einfach nur verstecken willst ->

    [autoit]

    If $msg = $ok Then
    GuiSetState(@SW_HIDE, $sTitle)

    [/autoit]

    Einmal editiert, zuletzt von ChaosKeks (14. Juni 2009 um 16:50)

  • Hallo,

    dies kann nicht das komplette Skript sein (läst sich nicht ausführen), aber meine Glaskugel meint:

    Spoiler anzeigen
    [autoit]

    _abfragebox ("Programme")
    Func _abfragebox($sTitle)
    ;diese abfragebox macht soweit das sie RAR namen kopiert & Samples können geläscht werden
    GUICreate($sTitle, 500, 500)
    ;BUTTONS
    GUICtrlCreateLabel("Hier die gewünschten Programme auswählen und dann FERTIG drücken", 10, 10)
    $1 = GUICtrlCreateCheckbox("ICQ 6.5", 11, 40)
    $2 = GUICtrlCreateCheckbox("Firefox", 11, 70)
    $3 = GUICtrlCreateCheckbox("Divx", 11,100)
    $4 = GUICtrlCreateCheckbox("Java", 11,130)
    $ok = GUICtrlCreateButton("FERTIG", 150, 460, 60, 30)
    $exit = GUICtrlCreateButton("Exit", 250, 460, 60, 30)
    GUISetState() ; GERBAUCHT damit GUI angezeigt wird
    EndFunc
    While 1
    $msg = GUIGetMsg()
    If $msg = -3 Then ; abfrage für den X button
    Exit
    EndIf
    ;IF für OK button
    If $msg = $ok Then
    If GUICtrlRead($1) = $GUI_CHECKED Then
    ;install ICQ6.5
    MsgBox (0,"Wird installiert","ICQ 6.5",5)
    EndIf
    If GUICtrlRead($2) = $GUI_CHECKED Then
    ;install Firefox
    MsgBox (0,"Wird installiert","FIREFOX",5)
    Endif
    If GUICtrlRead($3) = $GUI_CHECKED Then
    ;install Divx
    MsgBox (0,"Wird installiert","Divx",5)
    Endif
    If GUICtrlRead($4) = $GUI_CHECKED Then
    ;install Java
    MsgBox (0,"Wird installiert","JAVA",5)
    Endif
    Else
    GUIDelete($sTitle)
    EXitLoop
    EndIf
    ;If für exit button
    If $msg = $exit Then
    Exit
    EndIf
    WEnd

    [/autoit]

    so würde es gehen falls du im MsgLoop-Modus skriptest und die Gui die einzigste des Skriptes ist, wenn nicht poste das komplette Skript, damit man etwas genauer schauen kann,

    mfg (Auto)Bert

  • bis jetzt ist es das komplette script

    es soll später (da wo die msgboxen sind) die autoinstallationsscripte von den bestimmten Programmen ausführen

    aber jetzt stehe ich vor dem nächsten Problem... ich möchte das sich Die GUI schließt nachdem ich auf FERTIG geklickt habe, und sich dann eine neue GUI öffnet mit den ausgewählten Programmen...

    also in dem fall dann z.B.

    "ICQ 6.5"
    "JAVA"

    Und dann dort die scripte von Oben bis unten abgearbeitet werden und bei fertigstellung evtl ein X Vor dern Programmnamen kommt...
    aber wenn ich jetzt

    [autoit]

    If GUICtrlRead($1) = $GUI_CHECKED Then
    ;install ICQ6.5
    MsgBox (0,"Wird installiert","ICQ 6.5",5)
    GUIDelete ($sTitle)
    EndIf

    [/autoit]

    mache ... dann löscht sie sich sobalt sie da angekommen ist und macht nix mehr...

    Kleiner AutoIt Lehrling :)

  • Hallo BlackDeath,

    hier noch einmal das Skript (lauffähig):

    Spoiler anzeigen
    [autoit]

    ; *** Start added by AutoIt3Wrapper ***
    #include <GUIConstantsEx.au3>
    ; *** End added by AutoIt3Wrapper ***
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Add_Constants=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    Global $ok, $1, $2, $3, $4
    Global $Title = "Test"
    Global $hGui, $exit, $ok

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

    _abfragebox ("Programme")

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

    Func _abfragebox($sTitle)
    ;diese abfragebox macht soweit das sie RAR namen kopiert & Samples können geläscht werden
    $hGui = GUICreate($sTitle, 500, 500)
    ;BUTTONS
    GUICtrlCreateLabel("Hier die gewünschten Programme auswählen und dann FERTIG drücken", 10, 10)
    $1 = GUICtrlCreateCheckbox("ICQ 6.5", 11, 40)
    $2 = GUICtrlCreateCheckbox("Firefox", 11, 70)
    $3 = GUICtrlCreateCheckbox("Divx", 11,100)
    $4 = GUICtrlCreateCheckbox("Java", 11,130)
    $1Stat = GUICtrlCreateLabel("",120,40,350,25)
    $2Stat = GUICtrlCreateLabel("",120,70,350,25)
    $3Stat = GUICtrlCreateLabel("",120,100,350,25)
    $4Stat = GUICtrlCreateLabel("",120,130,350,25)

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

    $ok = GUICtrlCreateButton("FERTIG", 150, 460, 60, 30)
    $exit = GUICtrlCreateButton("Exit", 250, 460, 60, 30)
    GUISetState() ; GERBAUCHT damit GUI angezeigt wird

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3
    Exit
    Case $exit
    Exit
    Case $ok
    ConsoleWrite("Alles OK" & @CRLF)
    ConsoleWrite(GUICtrlRead($1) & " " & $GUI_CHECKED & @CRLF)
    If GUICtrlRead($1) = $GUI_CHECKED Then
    GUICtrlSetData($1Stat,"Wird installiert ICQ 6.5")
    ;hier Insatllationsroutine aufrufen runwait
    sleep (3000)
    GUICtrlSetData($1Stat,"wurde installiert ICQ 6.5")
    EndIf
    If GUICtrlRead($2) = $GUI_CHECKED Then
    GUICtrlSetData($2Stat,"Wird installiert FireFox")
    ;hier Insatllationsroutine aufrufen
    sleep (3000)
    GUICtrlSetData($2Stat,"wurde installier FireFox")
    EndIf
    If GUICtrlRead($3) = $GUI_CHECKED Then
    GUICtrlSetData($3Stat,"Wird installiert DivX")
    ;hier Insatllationsroutine aufrufen
    sleep (3000)
    GUICtrlSetData($3Stat,"wurde installiert DivX")
    EndIf
    If GUICtrlRead($4) = $GUI_CHECKED Then
    GUICtrlSetData($4Stat,"Wird installiert JAVA")
    ;hier Insatllationsroutine aufrufen
    sleep (3000)
    GUICtrlSetData($4Stat,"wurde installiert JAVA")
    EndIf
    GUIDelete($hGui)
    EXitLoop
    EndSwitch
    WEnd
    EndFunc

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


    Du must nur die MsgBoxen gegen den Aufruf des Installprogramms tauschen z.B. mit runwait

    viel Spass damit

    mfg (Auto)Bert

    Einmal editiert, zuletzt von AutoBert (14. Juni 2009 um 17:53)

  • Und das ganze noch in schön:
    (sry hatte wohl den Thread noch nicht refresht und Berts Post gelesen)

    Spoiler anzeigen
    [autoit]

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

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

    Dim $Opt[5], $sTitle = "Programme"

    GUICreate($sTitle, 330, 200)
    GUICtrlCreateLabel("Wählen Sie die gewünschten Programme zur Installation aus!", 20, 10)
    $Opt[1] = GUICtrlCreateCheckbox("ICQ 6.5", 11, 40)
    $Opt[2] = GUICtrlCreateCheckbox("Firefox", 11, 70)
    $Opt[3] = GUICtrlCreateCheckbox("Divx", 11,100)
    $Opt[4] = GUICtrlCreateCheckbox("Java", 11,130)
    $Edit = GuiCtrlCreateEdit("", 80,40,230,110,$WS_VSCROLL)
    $ok = GUICtrlCreateButton("Go", 150, 160, 60, 30)
    $exit = GUICtrlCreateButton("Exit", 250, 160, 60, 30)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case -3,$Exit
    Exit
    Case $ok
    _Install()
    EndSwitch
    WEnd

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

    Func _Install()
    GuiCtrlSetData($edit, "")
    $prog = StringSplit("ICQ 6.5,FireFox,DivX,Java", ",")
    For $i = 1 To 4
    If BitAnd(GuICtrlRead($Opt[$i]), $GUI_CHECKED)=1 Then
    GuiCtrlsetData($Edit, "Das Programm "&$prog[$i]&" wird installiert..."&@CRLF,1)
    EndIf
    Next
    EndFunc

    [/autoit]


    Achja guck dir doch mal die Install-O-Matic an (IOM)

  • Danke an euch beide ich werds mir dann mal ein wenig zusammenbasteln
    jetzt noch eine frage...

    wie bastelt man ne GUI mit reitern oben drauf?
    also sozusagen bei mir "Kategorien"

    dann also ca. so

    Kategorien = z.b. Multimedia , System, Schutz
    und in den verschiedenen Fenstern soll mann dann siene häckchen setzten können und wenn man dann auf OK klickt soll das ablaufen was Autobert geschreiben hat nur in einem Extra GUI...

    also die auswahl soll in einem Extra gui erschienen mit den "Wird installiert" "Wurde installiert"...

    jetzt ist die frage..

    wie lasse ich "NUR" die auswahl in ner neuen GUI erscheinen ? wie mache ich die Kategorien reiter?

    MFG: Blacky911

    Kleiner AutoIt Lehrling :)

  • Hallo BlackDeath911 ([OT]wieviele 911er schwarze Porsches hast du den schon zerlegt?[/OT]),

    zu Kartenreitern schau dir mal die Hilfe zu GuiCtrlCreateTab an.
    Wenn du mehrere GUIs erstellen willst solltest du dir überlegen im OnEventModus zu skripten (ist meines Erachtens nach einfacher) lies dazu in der Hilfe das Kapitel Gui-Konzepte.

    mfg (Auto)Bert

  • Okay danke an euch :) werde mir das mal anschauen und wenn ich noch fragen haben sollte Eröffne ich einfach ein neues Thema...

    dieses hier ist somit gelöst :)

    @ Autobert

    Zitat

    Hallo BlackDeath911 ([OT]wieviele 911er schwarze Porsches hast du den schon zerlegt?[/OT]),

    Ich habe noch keine 911er porsche zerlegt :D ich weiß auch nciht woher mien name genau stammt... Blackdeath kommt irgendwie von einem Cheat in Age of Empires 2 oder so ich weiß nicht geuan auf jedenfall war es dort ein Cheat :D und die 911 kam weil irgendwo schon Blackdeath vorhanden war und somit eine Zahl hermusste... da kam mir einfach die 911 in den sinn... keine ahnung warum

    MFG: Blackdeath911

    Kleiner AutoIt Lehrling :)