• ich hab mal einfach um es auszuprobieren nen kleinen Downloader geschireben:

    Spoiler anzeigen
    [autoit]

    #NoTrayIcon
    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GUIStatusBar.au3>

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Downloader", 509, 164, 193, 125, BitOR($WS_MAXIMIZEBOX,$WS_MINIMIZEBOX,$WS_SIZEBOX,$WS_THICKFRAME,$WS_SYSMENU,$WS_CAPTION,$WS_OVERLAPPEDWINDOW,$WS_TILEDWINDOW,$WS_POPUP,$WS_POPUPWINDOW,$WS_GROUP,$WS_TABSTOP,$WS_BORDER,$WS_CLIPSIBLINGS))
    $Label1 = GUICtrlCreateLabel("URL: ", 16, 16, 36, 17)
    $Input1 = GUICtrlCreateInput("", 72, 16, 321, 21)
    $Label2 = GUICtrlCreateLabel("Downloading: no", 16, 56, 380, 17)
    $Progress1 = GUICtrlCreateProgress(16, 88, 377, 25)
    $Button1 = GUICtrlCreateButton("Download", 416, 32, 81, 25, 0)
    $Button2 = GUICtrlCreateButton("Abort", 416, 80, 81, 25, 0)
    $status=_GUICtrlStatusBar_Create($Form1)
    _GUICtrlStatusBar_SetText($status,"Able to Download: Yes",0,0)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    $ding=0
    $h=0
    $x=""
    $ox=""
    global $inet=1

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

    AdlibRegister("adl",10000)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    if $ding=1 Then
    InetClose($h)
    $ding=0
    guictrlsetdata($Progress1,0)
    guictrlsetdata($Label2,"Downloading: Aborted")
    EndIf
    AdlibUnRegister("adl")
    Exit
    case $Button1
    if $ding=0 then
    $xx=1
    $old=0
    $h=0
    $u=guictrlread($Input1)
    $size=Round(InetGetSize($u) / 1024 / 1024,2)
    while $xx<>0
    $xx=stringinstr($u,"/",0,1,$old+1)
    if $xx<>0 then $old=$xx
    WEnd
    $fina=stringmid($u,$old+1)
    $varSaveAs = $fina
    $h=inetget($u,$varSaveAs,0,1)
    $ding=1
    EndIf
    case $Button2
    if $ding=1 Then
    InetClose($h)
    $ding=0
    guictrlsetdata($Progress1,0)
    guictrlsetdata($Label2,"Downloading: Aborted")
    EndIf
    EndSwitch
    if inetgetinfo($h,2)=1 and $ding=1 then
    $ding=0
    guictrlsetdata($Progress1,0)
    guictrlsetdata($Label2,"Downloading: Finished")
    EndIf
    if $ding=1 Then
    $mb=round(inetgetinfo($h,0)/1024/1024,2)
    guictrlsetdata($Label2,"Downloading: "&$mb& " of "&$size&" MB")
    $proz=($mb/$size)*100
    guictrlsetdata($Progress1,$proz)
    EndIf
    $x=guictrlread($Input1)
    if $ox<>$x Then
    $ox=$x
    $si=round(InetGetSize($ox)/1024/1024,2)
    guictrlsetdata($Label2,"Eingabe, Größe: "&$si&" MB")
    EndIf
    sleep(10)
    WEnd

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

    func adl()
    if _internetcheck()=0 then
    if $inet=1 then _GUICtrlStatusBar_SetText($status,"Able to Download: No",0,0)
    $inet=0
    Else
    $inet=1
    _GUICtrlStatusBar_SetText($status,"Able to Download: Yes",0,0)
    EndIf
    EndFunc

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

    Func _internetcheck()
    local $timer = TimerInit()
    While Not Ping("www.google.de")
    Sleep(1000)
    If TimerDiff($timer) > 5000 Then Return 0
    WEnd
    Return 1
    EndFunc

    [/autoit]

    PS: _internetcheck() habe ich irgendwo hier aus dem Forum

  • Super, habe aber einen kleinen Änderungesvorschlag: InetGetSize($u) ist völlig unnötig. Du solltest hier einfach Inetgetinfo($h,1) verwenden, da musst du nicht extra eine weitere Verbindung aufbauen ;)
    Edit: Also in Zeile 45.
    PS: das andere InetgetSize würde ich in eine AdlIb-Funktion setzen und nicht ganz so häufig aktualisieren. Alle halbe Sekunde reicht da doch.
    Auch 63-73 kannst du per Adliob erldigen.

  • Hallo.
    Wollte mir grad was damit downloaden (CoD 4 Demo, ~1.4GB)
    Und es zeigte sofort Download Finished an.
    Da is doch i.was falsch.
    MfG. PrideRage

    Meine Projekte:
    ClipBoard Manager (beendet)
    Gutes ClipBoard Verwaltungs Programm mit nützlichen Funktionen.

    HTML Creator (beendet)
    Nützliches Tool um schnell ein eigenes HTML Dokument zu erstellen.