Downloadmanager für LAN-Webserver

  • ok, danke, die GUI is gut, aber wie mache ich es, dass jetzt auf der Detailseite auch die richtigen informationen aus der INI ausgelesen werden.
    Also ich weiß wie das mim auslesen geht, aber nich, wie es gehn soll, dass wenn man in der Hauptgui auf irgendeinen Button klickt, dass dann die richtige Information erscheint.

    Einmal editiert, zuletzt von Battlestr1k3 (14. Januar 2009 um 15:20)

  • So hier der Code:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <EditConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <ButtonConstants.au3>

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

    ;> Variablen
    Global $ahButton[8], $ahDescription[8], $title[8], $data
    Dim $title[100], $details[1][1], $buffer, $text[3]
    $text[0] = "Spiel: "
    $text[1] = "Version: "
    $text[2] = "Author: "

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

    $buffer = 1

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

    ;> Ini auslesen und den Variablen die Strings zuteilen
    $var = IniReadSection("C:\games.ini", "Games")
    If @error Then
    MsgBox(4096, "", "Error occurred, probably no INI file.")
    Else
    ReDim $details[4][$var[0][0]]

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

    For $i = 1 To $var[0][0]
    $var1 = StringSplit($var[$i][1], ";")

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

    If $buffer < UBound($var1) - 1 Then
    $buffer = UBound($var1)
    ReDim $details[$buffer][$var[0][0]]
    EndIf

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

    $details[0][$i - 1] = $var[$i][0]

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

    For $j = 1 To UBound($var1) - 1
    $details[$j][$i - 1] = $var1[$j]
    Next
    Next
    EndIf

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

    ;> GUI erstellen
    $dGui = GUICreate("Details", 290, 352, 193, 125)
    $Pic1 = GUICtrlCreatePic("", 8, 8, 121, 100, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    $gamename = GUICtrlCreateLabel($title[0], 136, 16, 130, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $versionnum = GUICtrlCreateLabel($title[1], 136, 40, 120, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $author = GUICtrlCreateLabel($title[2], 136, 64, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $descript = GUICtrlCreateLabel("Beschreibung:", 8, 120, 100, 17)
    GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
    $download = GUICtrlCreateButton("&Download", 8, 312, 169, 33, 0)
    $close = GUICtrlCreateButton("&Abbrechen", 184, 312, 97, 33, 0)
    $Edit = GUICtrlCreateEdit("", 8, 144, 273, 161, BitOR($ES_AUTOVSCROLL, $ES_AUTOHSCROLL, $ES_WANTRETURN))
    GUICtrlSetData(-1, "Edit")
    $hGui = GUICreate('Test', 320, 480, -1, -1)
    GUISetState(@SW_SHOW, $hGui)

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

    ;> Buttons erstellen
    For $i = 0 To 7
    $ahButton[$i] = GUICtrlCreateButton('', 20 + Mod($i, 3) * 100, 10 + Int($i / 3) * 100, 64, 64, $BS_ICON)
    GUICtrlSetImage(-1, 'shell32.dll', -44)
    $ahDescription[$i] = GUICtrlCreateLabel($details[0][$i], 20 + Mod($i, 3) * 100, 80 + Int($i / 3) * 100, 64, 30, $SS_CENTER)
    Next
    GUISetState()

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    If $nMsg[1] = $hGui Then
    GUIDelete($hGui)
    Exit
    Else
    If $nMsg[1] = $dGui Then
    GUISetState(@SW_HIDE, $dGui)
    EndIf
    EndIf
    Case $ahButton[0]
    $data = 0
    _SetData($data)
    Case $ahButton[1]
    $data = 1
    _SetData($data)
    Case $ahButton[2]
    $data = 2
    _SetData($data)
    Case $ahButton[3]
    $data = 3
    _SetData($data)
    Case $ahButton[4]
    $data = 4
    _SetData($data)
    Case $ahButton[5]
    $data = 5
    _SetData($data)
    Case $ahButton[6]
    $data = 6
    _SetData($data)
    Case $ahButton[7]
    $data = 7
    _SetData($data)
    EndSwitch
    WEnd

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

    ;> Detailseite Infos setzen
    Func _SetData($data)
    GUICtrlSetData($gamename, $text[0] & $details[0][$data])
    GUICtrlSetData($versionnum, $text[1] & $details[1][$data])
    GUICtrlSetData($author, $text[2] & $details[2][$data])
    GUICtrlSetData($Edit, $details[3][$data])
    GUISetState(@SW_SHOW, $dGui)
    EndFunc ;==>_SetData

    [/autoit]

    Ini-Datei:

    Spoiler anzeigen


    [Games]
    Far Cry 2=v.1.0.2;Ubisoft;Far Cry 2 is the next-generation PC first-person shooter from Ubisoft
    Warcraft 3=v.2.0.5;Bliz.;Warcraft 3...
    UT2020=v.1.7;Ubisofti;UT2020..
    MopMap=v.4.2;Xtior;MapMap
    UT3=v.5.1;Ubisoft;UT3..
    CSS=v.1.6;Steam;Css..
    America's Army=v.2.3;American Ar.;AA....
    AgeofEmpires 2=v.1.7;Bliz.;AOE...

    mfg
    Jautois

    Einmal editiert, zuletzt von Jautois (14. Januar 2009 um 22:10)


  • 9 Speicherplätze... 0;1;2;3;...;6;7;8

    Und danke für IniGetSection oder so, kannte ich noch nicht...

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

  • Jio war mein Fehler, hatte mich bei dem letzen Array vertan:

    $ahButton[0]
    $ahButton[1]
    $ahButton[2]
    ...
    $ahButton[7]

    Gut aufgepasst! :thumbup:

  • Vielen Dank für die Bemühungen, aber ich glaube, das mit der INI is mir zu kompliziert :pinch:
    Ich werde das jetzt mal ohne probieren; also ich werde die ganzen Details in das Script integrieren, und die Clients müssen sich dann eben über ein kleines Update immer die neueste Versin ziehen. Ich weiß, dass das ziemlich umständlich ist, aber so verstehe ich es.
    Jautois, dein Script habe ich einiger maßen verstanden, aber ich wüsste jetzt z.B. nich wie ich noch ein zusätzliches Feld machen, bzw. das mit den Downloadlinks hinbekommen würde 8|

  • Deine Variante ist dann aber viel umständlicher und zeitaufwendiger, als wenn du dich etwas hinsetzen würdest um das mit der ini zu verstehn. Aber kannst du natürlich machen wie du willst...

    Zu dem Download: (Scriptergänzung, änder einfach die While-Schleife)

    Spoiler anzeigen
    [autoit]


    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $GUI_EVENT_CLOSE
    If $nMsg[1] = $hGui Then
    GUIDelete($hGui)
    Exit
    Else
    If $nMsg[1] = $dGui Then
    GUISetState(@SW_HIDE, $dGui)
    EndIf
    EndIf
    Case $ahButton[0]
    $data = 0
    _SetData($data)
    Case $ahButton[1]
    $data = 1
    _SetData($data)
    Case $ahButton[2]
    $data = 2
    _SetData($data)
    Case $ahButton[3]
    $data = 3
    _SetData($data)
    Case $ahButton[4]
    $data = 4
    _SetData($data)
    Case $ahButton[5]
    $data = 5
    _SetData($data)
    Case $ahButton[6]
    $data = 6
    _SetData($data)
    Case $ahButton[7]
    $data = 7
    _SetData($data)
    Case $download
    MsgBox(1,"Download von " & $details[0][$data],"Download....")
    InetGet("<deine Url>","<filename>") ; hier musst du dann den Namen des Spiels ($details[0][$data]) mit dem downloadlink verknüpfen. Am besten den Ordner der gedownloadet werden soll genau so nennen, dann kannst du machen:
    ;
    InetGet("<deine Url>/" & $details[0][$data])
    ;
    EndSwitch
    WEnd

    [/autoit]
  • das Problem ist, dass ich von dem script nicht alles verstehe und ich auch kein "Script-Kiddie" sein möchte und deinen Code einfach abkopieren möchte ;)

  • Du kannst ruhig den Code kopieren. Wenn du Fragen hast frag gezielt.. zu allem was du nicht verstehst, dafür sind wir ja da ;)