Variablen Deklaration und Abfrage

  • Hallo,

    also ich bin neu in der AutoIt Skript Programmierung... Ich bin gerade dabei ein Skript zu erstellen, um einen Rechner automatisch mit der nötigen Software auszustatten... Es werden quasi Programme wie Firefox usw einfach ganz simpel per run("...") und controlclick("...") installiert. Dieses Skript soll für mehrere Rechner angewandt werden können. Programme wie OpenOffice wollen allerdings einen Benutzernamen eingetragen haben... Da dieser ja immer variiert will ich vor der gesamten Routine ein kleines GUI Fenster erstellen, in welches man den Benutzernamen eingibt. Dann soll die Routine starten und bei OpenOffice will ich dann genau diesen Benutzernamen automatisch eingetragen haben... Ich hab leider keinen wirklichen Plan von GUI mit AutoIt... Kann mir da jemand mit nem Beispielskript oder so helfen? Ich denke es ist nicht viel, wenn man weiß wies geht, aber ich bin langsam ratlos...

    Danke im Vorraus... MrCBeat

    • Offizieller Beitrag

    Also,
    Wenn du schnell ein Ergebnis haben willst, könntest du die Install-O-Matic ausbauen. Da ist die Standard-Software schon dabei. Dann müsstest du nur die eine Stelle für den Benutzernamen anpassen.

    Wenn du es (zu Übungszwecken beispielsweise) selbst machen willst, dann schau dir mal in der deutschen Hilfe den Abschnitt über GUI allgemeine ("GUI-Konzepte") an. Da finden sich kleine Beispielskripte.
    Wenn du größere brauchst, kann ich helfen.

    peethebee

  • Okay hab mal ein bissl rumprobiert... Hat funktioniert... jetzt hab ich genau das was ich wollte... Mich wundert nur eins... Wenn ich besagtes Benutzer Eingabe fenster einzeln als Skript hab, und auf OK (gleichgesetzt mit Close) schließt er das fenster... Binde ich das in die OO installationsroutine ein, wird dieses Fenster trotz Klick auf OK nicht geschlossen... Ist sowas bekannt?

  • Das ist das GUI:

    #include <GUIConstants.au3>

    GUICreate ("Benutzername", 400, 100)

    GUICtrlCreateLabel ("Bitte Benutzernamen eingeben:", 10, 30, 105, 30)
    $benutzername = GUICtrlCreateEdit ("", 120, 30, 260, 25, 0)

    $okbutton = GUICtrlCreateButton ("OK", 175, 60, 50, 20)

    GUISetState(@SW_SHOW)

    While 1
    $msg = GUIGetMsg()
    If $msg <> 0 Then
    $name = GUICtrlRead($benutzername)
    Select
    Case $msg = $okbutton Or $msg = $GUI_EVENT_CLOSE
    ExitLoop
    EndSelect
    EndIf
    WEnd

    ...so einzeln funkioniert das mit dem Schließen prima...
    Schreibe ich das Ganze allerdings vor die Routine von Open Office dann wird das Fenster erst ganz zum Schluss, mit Beenden des Skripts geschlossen...

  • Klar... hier...

    Sleep(2000)
    run("OOo_2.0.3_Win32Intel_install_de.exe")
    WinWaitActive("OpenOffice.org", "Vielen Dank, dass Sie sich für OpenOffice.org")
    Send("!w")
    WinWaitActive("OpenOffice.org", "Wählen Sie den Ordner, in den die Dateien entpackt werden sollen.")
    Send("C:\Programme\OpenOffice.org")
    Send("!e")
    WinWaitActive("OpenOffice.org 2.0 - Installation Wizard", "Willkommen beim Installationsassistenten")
    Send("w")
    Send("w")
    WinWaitActive("OpenOffice.org", "")
    Send("w")
    WinWaitActive("OpenOffice.org", "Lizenzvereinbarung")
    Send("a")
    Send("w")
    Send($name)
    Send("{TAB}")
    Send("Domain")
    Send("!w")
    Send("!w")
    WinWaitActive("OpenOffice.org", "Wählen Sie die Dateitypen aus, die mit")
    ControlClick("OpenOffice.org", "Wählen Sie die Dateitypen aus, die mit", 4144)
    Send("!i")
    WinWaitActive("OpenOffice.org", "Der Installationsassistent hat OpenOffice.org")
    ControlClick("OpenOffice.org", "Der Installationsassistent hat OpenOffice.org", 4125)

    hoffe es hilft dir...

    • Offizieller Beitrag

    Hallo!

    Ich meinte die Version, die zeig, wie du diese beiden Teile verbunden hast...
    Sorry, hatte mich zu kurz und zu ungenau gefasst.

    Edit: Eine PInputbox macht das gleiche wie dein Fenster und da musst du die Events nicht selbst verarbeiten.

    peethebee

    p.s. habe dich in ICQ geadded.

  • einfach untereinander... es fängt mit dem gui an und drunter (deshalb sleep) kommt die routine....

    • Offizieller Beitrag

    Okay, dann mach über ExitLoop noch folgendes:

    Code
    GUIDelete($gui_id)


    Damit wird die GUI gelöscht und sollte verschwinden. Sonst wird sie erst am Ende des Skriptes automatisch entfernt.

    Außerdem brauchst du noch statt

    Code
    GUICreate ("Benutzername", 400, 100)


    das

    Code
    $gui_id = GUICreate ("Benutzername", 400, 100)


    Damit speicherst du die ID, die das Fesnter intern von Windows bekommt, in der Variablen $gui_id und kannst so später exakt dieses Fenster mit GUIDelete ansprechen.

    Die andere Lösung wäre statt der kompletten GUI einfach folgende InpuBox-Zeile (miit Überprüfung und Verhinderung, dass der Nutzer abbricht ohne etwas einzugeben):

    Code
    Do
    $name = InputBox("Benutzername", "Bitte geben Sie den gewünschten Benutzernamen ein:", @UserName)
    Until $name <> ""

    Ich hoffe, das hilft dir,
    peethebee

  • Hehe, okay... so gehts natürlich auch... Das war so klar, dass das nur so n kurzer befehl ist, aber naja immerhin wäre es auch gegangen... :lol:

    Danke auf jeden Fall, jetzt gehts einwandfrei...