; *** Start added by AutoIt3Wrapper *** #include ; *** End added by AutoIt3Wrapper *** #Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Add_Constants=n #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #cs ---------------------------------------------------------------------------- AutoIt Version: 3.3.6.1 Author: AutoBert: http://www.autoit.de/index.php?page=Thread&postID=164341#post164341 Skriptbeispiel für den Umgang mit INI-Files und ComboBox #ce ---------------------------------------------------------------------------- #include #include #include #include #include ;#include Const $sElect = "bitte einen Download auswählen" Global $sUrl ;ausgewählte DownloadUrl Global $sIni = @AppDataDir & "\Download.INI" ;Pfad zur Inidatei Global $sLocalFolder ;letztes Verzeichnis in das gespeichert wurde Global $aData[3] ;Download-Infos Global $iFileSize ;Grösse des DL-Files Global $tStart ;Download gestartet Global $nKBPerSec ;KB pro Sekunde Global $iPercent ;aktuell heruntergeladenen Prozentanteil der Datei If Not FileExists($sIni) Then $sData = "AutoIt 3.3.12.0=https://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe" & @LF $sData &= "AutoIt Beta=https://www.autoitscript.com/autoit3/files/beta/autoit/autoit-v3.3.13.20-beta-setup.exe" & @LF $sData &= "Scite=http://www.autoitscript.com/cgi-bin/getfile.pl?../autoit3/scite/download/SciTE4AutoIt3.exe" & @LF IniWriteSection($sIni, "URLs", $sData) EndIf $hGui = GUICreate("mini-Downloader", 300, 105, 302, 218) $idcboProg = GUICtrlCreateCombo("", 8, 8, 200, 25) $idbtnAdd = GUICtrlCreateButton("&Hinzufügen", 213, 8, 80) $idbtnDel = GUICtrlCreateButton("&Löschen", 213, 35, 80) $idprgInfo = GUICtrlCreateProgress(8, 70, 285, 30) $idbtnDL = GUICtrlCreateButton("&Downloaden", 8, 35, 200) $hGUI_c = GUICreate("", 269, 30, 8, 70, $WS_POPUP, BitOR($WS_EX_LAYERED, $WS_EX_TRANSPARENT, $WS_EX_MDICHILD), $hGUI) GUISetBkColor(0x989898, $hGUI_c) $idlblInfo = GUICtrlCreateLabel("0", 0, 8, 285, 25, $ES_CENTER) GUICtrlSetFont(-1, 12, 1000) GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT) _WinAPI_SetLayeredWindowAttributes($hGUI_c, 0x989898) GUISetState(@SW_SHOW, $hGUI) GUISetState(@SW_SHOWNA, $hGUI_c) read_INI() GUISetState(@SW_SHOW) HttpSetUserAgent("Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.7) Gecko/20100713 Firefox/3.6.16") ;sonst streiken manche Freehoster wenn der AutoItUseragent gesetzt ist While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE IniWrite($sIni, "Path", "Local", $sLocalFolder) Exit Case $idbtnAdd $write1 = InputBox("Downloadadresse", "Bitte eine gültige Download-Adresse eingeben") If $write1 <> "" Then $write2 = InputBox("Download verwalten unter", "Bitte Kurzbegriff eingeben") If $write2 <> "" Then IniWrite($sIni, "URLs", $write2, $write1) GUICtrlSetData($idcboProg, $write2, $write2) EndIf get_Selection() Case $idbtnDel $sDel = GUICtrlRead($idcboProg) IniDelete($sIni, "URLs", $sDel) GUICtrlSetData($idcboProg, "") read_INI() Case $idcboProg get_Selection() Case $idbtnDL ;get_Selection() $bCanceld = False GUICtrlSetData($idbtnDL, "Download &abbrechen") $aDatei = StringSplit($sUrl, "/") $sDatei = $aDatei[$aDatei[0]] $sLocal = FileSaveDialog($sDatei & "Speichern unter", $sLocalFolder, "Alle (*.*)", 18, $sDatei, $hGui) If Not @error Then GUICtrlSetState($idprgInfo, $GUI_SHOW) GUICtrlSetState($idlblInfo, $GUI_SHOW) GUICtrlSetData($idlblInfo, "Download startet") $aTmp = StringSplit($sLocal, "\") $sLocalFolder = $aTmp[$aTmp[1]] $iFileSize = InetGetSize($sUrl) $hDL = InetGet($sUrl, $sLocal, 1, 1) $tStart = TimerInit() $aData[0] = 0 Do $bCanceld = _MySleep(500) If $bCanceld Then ExitLoop $aData = InetGetInfo($hDL, -1) If $aData[0] > 0 Then $tDiff = TimerDiff($tStart) $nKBPerSec = Round($aData[0] / $tDiff * 1000 / 1024, 2) $iPercent = Round($aData[0] / $iFileSize * 100, 2) If GUICtrlRead($idlblInfo) <> $iPercent Then GUICtrlSetData($idprgInfo, $iPercent) GUICtrlSetData($idlblInfo, $iPercent & " % " & $nKBPerSec & " KB/sec") WinSetTitle($hGui, "", "DL: " & $sDatei & " " & $iPercent & "%") EndIf EndIf Until $aData[2] InetClose($hDL) ;_ArrayDisplay($aData) If $aData[0] < $aData[1] Then $aData[3] = False ;dummerweise werden nur DL-Fehler auf meiner Seite erkannt es kommt aber vo das der DL aus anderen Gründen nicht erfolgreich war If $aData[0] < $iFileSize Then $aData[3] = False ;dummerweise werden nur DL-Fehler auf meiner Seite erkannt es kommt aber vo das der DL aus anderen Gründen nicht erfolgreich war If Not $aData[3] Then If $bCanceld Then $sMsg = "Download wurde durch Benutzer abgebrochen" Else $sMsg = "Download hat abgebrochen," & @CRLF & "überprüfen sie Ihre Internetverbindung." & @CRLF & @CRLF & "Probieren Sie danach noch einmal!" EndIf MsgBox(48, "Fehler:", $sMsg) FileDelete($sLocal) Else GUICtrlSetState($idbtnDL, $GUI_DISABLE) GUICtrlSetData($idcboProg,$sElect,$sElect) MsgBox(64, $sLocal, "erfolgreich heruntergeladen") EndIf Else MsgBox(48, "Fehler:", "keinen Namen zum Speichern ausgeählt") EndIf GUICtrlSetData($idprgInfo, 0) GUICtrlSetData($idlblInfo, 0) GUICtrlSetState($idlblInfo, $GUI_HIDE) GUICtrlSetState($idprgInfo, $GUI_HIDE) GUICtrlSetData($idbtnDL, "&Downloaden") WinSetTitle($hGui, "", "mini-Downloader") EndSwitch WEnd Func _MySleep($iMSec) Local $nMsg, $dt = TimerInit() Do $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $idbtnDL Return 1; DL Abbrechen wurde gedrückt EndSwitch Sleep(10) Until TimerDiff($dt) > $iMSec EndFunc ;==>_MySleep Func read_INI() $list1 = IniReadSection($sIni, "URLs") ;ConsoleWrite($list1 & @CRLF) If IsArray($list1) Then For $i = 1 To $list1[0][0] GUICtrlSetData($idcboProg, $list1[$i][0]) Next EndIf _GUICtrlComboBox_InsertString($idcboProg, $sElect, 0) _GUICtrlComboBox_SetCurSel($idcboProg, 0) $sLocalFolder = IniRead($sIni, "Path", "Local", @ScriptDir) EndFunc ;==>read_INI Func get_Selection() If GUICtrlRead($idcboProg) = $sElect Then GUICtrlSetState($idbtnDL, $GUI_DISABLE) GUICtrlSetData($idlblInfo, "") Else GUICtrlSetState($idbtnDL, $GUI_ENABLE) $Prog = GUICtrlRead($idcboProg) ;ConsoleWrite("ausgewählt: " & $Prog & @CRLF) $sUrl = IniRead($sIni, "URLs", $Prog, "") EndIf EndFunc ;==>get_Selection