~EDIT~ Mehrere Schlüssel vor Starten des Clienten auslesen?

  • Hallo Mitglieder.

    Ich sitze gerade an einem kleinen Script dran und habe ein Problem.

    Mein Script ist soweit fertig, nur stellt sich mir das Problem, dass ich nicht weiß wie ich drei IniWrites miteinander verbinde.

    Hier ist der Script:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Icon.ico
    #AutoIt3Wrapper_outfile=Launcher.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; ================================;
    ; Minecraft Launcher
    ; Made by Aldeos
    ; © 2011 Aldeos.de
    ; ================================;

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

    ;====Includes====;
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    If Not FileExists(@AppDataDir& "\.minecraft\Splash.bmp") Then FileInstall("Splash.bmp", @AppDataDir& "\.minecraft\Splash.bmp")

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

    ;====GUI====;
    $GUI = GUICreate("Minecraft Launcher by Aldeos", 400, 177, 203, 142)
    $NAME = GUICtrlCreateLabel("Login:", 104, 34, 33, 17)
    $NAME_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "NAME","")
    $NAME_INPUT = GUICtrlCreateInput($NAME_READ, 160, 32, 121, 21)
    $PASSWORD = GUICtrlCreateLabel("Password:", 104, 62, 53, 17)
    $PASS_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "PASS","")
    $PASSWORD_INPUT = GUICtrlCreateInput($PASS_READ, 160, 60, 121, 21)
    $IP = GUICtrlCreateLabel("IP:", 104, 90, 17, 17)
    $IP_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "IP","")
    $IP_INPUT = GUICtrlCreateInput($IP_READ, 160, 88, 121, 21)
    $SAVE = GUICtrlCreateButton("Speichern", 104, 128, 81, 25, $WS_GROUP)
    $START = GUICtrlCreateButton("Start", 192, 128, 89, 25, $WS_GROUP)
    $GUI_IMAGE = GUICtrlCreatePic(@AppDataDir & "\.minecraft\Splash.bmp", 0, 0, 401, 177, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

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

    ;====Funktionen====;
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $SAVE
    Case $START
    ShellExecute (@AppDataDir & "\.minecraft\Minecraft.exe", $NAME_READ & " " & $PASS_READ & " " & $IP_READ)
    If Not @error Then Exit
    EndSwitch
    WEnd

    [/autoit]

    Und hier sind die IniWrites:

    [autoit]

    IniWrite (@AppDataDir & "\.minecraft\Launcher.ini", "Config", "NAME", ($NAME_INPUT))
    IniWrite (@AppDataDir & "\.minecraft\Launcher.ini", "Config", "PASS", ($PASS_INPUT))
    IniWrite (@AppDataDir & "\.minecraft\Launcher.ini", "Config", "IP", ($IP_INPUT))

    [/autoit]

    Alle drei sollen mit dem Button $SAVE gespeichert werden.

    Ich hoffe mir kann einer helfen. :)

    2 Mal editiert, zuletzt von Kazuto (13. März 2011 um 07:14)

  • Ganz simpel:

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

    IniWriteSection(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "NAME=" & GUICtrlRead($NAME_INPUT) & @LF & "PASS=" & GUICtrlRead($PASS_INPUT) & @LF & "IP=" & GUICtrlRead($IP_INPUT))

    [/autoit][autoit][/autoit][autoit][/autoit]
  • So bitte :

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_icon=Icon.ico
    #AutoIt3Wrapper_outfile=Launcher.exe
    #AutoIt3Wrapper_UseX64=n
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; ================================;
    ; Minecraft Launcher
    ; Made by Aldeos
    ; © 2011 Aldeos.de
    ; ================================;

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

    ;====Includes====;
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    If Not FileExists(@AppDataDir & "\.minecraft\Splash.bmp") Then FileInstall("Splash.bmp", @AppDataDir & "\.minecraft\Splash.bmp")

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

    ;====GUI====;
    $GUI = GUICreate("Minecraft Launcher by Aldeos", 400, 177, 203, 142)
    $NAME = GUICtrlCreateLabel("Login:", 104, 34, 33, 17)
    $NAME_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "NAME", "")
    $NAME_INPUT = GUICtrlCreateInput($NAME_READ, 160, 32, 121, 21)
    $PASSWORD = GUICtrlCreateLabel("Password:", 104, 62, 53, 17)
    $PASS_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "PASS", "")
    $PASSWORD_INPUT = GUICtrlCreateInput($PASS_READ, 160, 60, 121, 21)
    $IP = GUICtrlCreateLabel("IP:", 104, 90, 17, 17)
    $IP_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "IP", "")
    $IP_INPUT = GUICtrlCreateInput($IP_READ, 160, 88, 121, 21)
    $SAVE = GUICtrlCreateButton("Speichern", 104, 128, 81, 25, $WS_GROUP)
    $START = GUICtrlCreateButton("Start", 192, 128, 89, 25, $WS_GROUP)
    $GUI_IMAGE = GUICtrlCreatePic(@AppDataDir & "\.minecraft\Splash.bmp", 0, 0, 401, 177, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    GUISetState(@SW_SHOW)

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

    ;====Funktionen====;
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $SAVE
    _save()
    Case $START
    ShellExecute(@AppDataDir & "\.minecraft\Minecraft.exe", $NAME_READ & " " & $PASS_READ & " " & $IP_READ)
    If Not @error Then Exit
    EndSwitch
    WEnd

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

    Func _save()
    If Not FileExists("Launcher.ini") Then

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

    $name = GUICtrlRead($NAME_INPUT)
    $pw = GUICtrlRead($PASSWORD_INPUT)
    $ip = GUICtrlRead($IP_INPUT)
    IniWrite("Launcher.ini", "Config", "NAME", $name)
    IniWrite("Launcher.ini", "Config", "PASS", $pw)
    IniWrite("Launcher.ini", "Config", "IP", $ip)
    Else
    $name = GUICtrlRead($NAME_INPUT)
    $pw = GUICtrlRead($PASSWORD_INPUT)
    $ip = GUICtrlRead($IP_INPUT)
    IniWrite("Launcher.ini", "Config", "NAME", $name)
    IniWrite("Launcher.ini", "Config", "PASS", $pw)
    IniWrite("Launcher.ini", "Config", "IP", $ip)
    EndIf
    EndFunc ;==>_save

    [/autoit]

    Meine Projekte :

    Taschenrechner [X]
    JamLegend Auto-Player [Canceld]
    Launcher [X]
    Multi-Game-Quest-Viewer [Canceld]


    [autoit]

    If $goffy or not $brain Then $DeleteInetCable

    [/autoit]
  • Der Launcher funktioniert jetzt ganz gut, jedoch muss er neugestartet werden, damit er richtig verbindet.

    Wie kann ich dies beheben?
    Es ist mir klar, dass man vorher einfach die INI erneut auslesen muss, bevor ShellExecute eintritt, aber ich weiß leider nicht wie.

    Mein aktueller Code:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Icon=Icon.ico
    #AutoIt3Wrapper_Outfile=Launcher.exe
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    ; ================================;
    ; Minecraft Launcher
    ; Made by Kazu
    ; © 2011 Kazu
    ; ================================;

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

    ;====Includes====;
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    If Not FileExists(@AppDataDir & "\.minecraft\Splash.bmp") Then FileInstall("Splash.bmp", @AppDataDir & "\.minecraft\Splash.bmp") ;- Fragt ab, ob Splash.bmp existiert, falls nicht installiert er diese Datei.
    If Not FileExists(@AppDataDir & "\.minecraft\Minecraft.exe") Then FileInstall("Minecraft.exe", @AppDataDir & "\.minecraft\Minecraft.exe") ;- Fragt ab, ob Minecraft.exe existiert, falls nicht installiert er diese Datei.

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

    ;====GUI====;
    #Region ### START Koda GUI section ###
    $GUI = GUICreate("Minecraft Launcher by Aldeos", 400, 177, 203, 142) ;- Erstellt die GUI.
    $NAME = GUICtrlCreateLabel("Login:", 104, 34, 33, 17) ;- Erstellt den Label "Login:".
    $NAME_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "NAME", "") ;- Liest aus der Launcher.ini die Wert NAME aus der Sektion Config.
    $NAME_INPUT = GUICtrlCreateInput($NAME_READ, 160, 32, 121, 21) ;- Erstellt ein Eingabefeld für den Namen.
    $PASSWORD = GUICtrlCreateLabel("Password:", 104, 62, 53, 17) ;- Erstellt den Label "Password:".
    $PASS_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "PASS", "");- Liest aus der Launcher.ini die Wert PASS aus der Sektion Config.
    $PASSWORD_INPUT = GUICtrlCreateInput($PASS_READ, 160, 60, 121, 21);- Erstellt ein Eingabefeld für das Password.
    $IP = GUICtrlCreateLabel("IP:", 104, 90, 17, 17) ;- Erstellt den Label "IP:".
    $IP_READ = IniRead(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "IP", "");- Liest aus der Launcher.ini die Wert IP aus der Sektion Config.
    $IP_INPUT = GUICtrlCreateInput($IP_READ, 160, 88, 121, 21);- Erstellt ein Eingabefeld für die IP.
    $SAVE = GUICtrlCreateButton("Save", 104, 128, 81, 25, $WS_GROUP) ;- Erstellt einen Button mit der Aufschrift "Save" zum speichern der IniWriteSection.
    $START = GUICtrlCreateButton("Start", 192, 128, 89, 25, $WS_GROUP) ;- Erstellt einen Button mit der Aufschrift "Start" zum starten des Spieles.
    $GUI_IMAGE = GUICtrlCreatePic(@AppDataDir & "\.minecraft\Splash.bmp", 0, 0, 401, 177, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS)) ;- Erstellt das Hintergrundbild für die GUI.
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    ;====Funktionen====;
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $SAVE
    IniWriteSection(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "NAME=" & GUICtrlRead($NAME_INPUT) & @LF & "PASS=" & GUICtrlRead($PASSWORD_INPUT) & @LF & "IP=" & GUICtrlRead($IP_INPUT)) ;- Schreit $NAME_INPUT, $PASSWORD_INPUT und $IP_INPUT in die INI.
    Case $START
    ShellExecute(@AppDataDir & "\.minecraft\Minecraft.exe", $NAME_READ & " " & $PASS_READ & " " & $IP_READ) ;- Startet die Datei "Minecraft.exe" mit den folgenden Parametern, $NAME_READ, $PASS_READ und $IP_READ.
    If Not @error Then Exit
    EndSwitch
    WEnd

    [/autoit]

    ~EDIT4~
    Habe es mit einer simplen Funktion gelöst.

    [autoit]

    Func _run()
    If Not @error Then
    $NAME = GUICtrlRead($NAME_INPUT)
    $PASS = GUICtrlRead($PASSWORD_INPUT)
    $IP = GUICtrlRead($IP_INPUT)
    ShellExecute(@AppDataDir & "\.minecraft\Minecraft.exe", $NAME & " " & $PASS & " " & $IP) ;- Startet die Datei "Minecraft.exe" mit den folgenden Parametern, $NAME_READ, $PASS_READ und $IP_READ.
    If Not @error Then
    IniWriteSection(@AppDataDir & "\.minecraft\Launcher.ini", "Config", "NAME=" & GUICtrlRead($NAME_INPUT) & @LF & "PASS=" & GUICtrlRead($PASSWORD_INPUT) & @LF & "IP=" & GUICtrlRead($IP_INPUT)) ;- Schreit $NAME_INPUT, $PASSWORD_INPUT und $IP_INPUT in die INI.
    Exit
    EndIf
    EndIf
    EndFunc

    [/autoit]

    Somit benötigt ich den $SAVE Button nicht mehr, da er es jetzt nach dem Starten in die INI schreibt.
    Danke an alle, die mir geholfen haben.

    3 Mal editiert, zuletzt von Kazuto (13. März 2011 um 07:14)