Beiträge von autoBert
-
-
HalloJulien,
dein Fehler beim _FilePut-Versuch ist sicherlich (Skript nurüberflgen) das vergessen die gerade geschriebene Datei zu schliessen,
mfg autoBert
-
Alles anzeigen
Hallo.
Ich will eine laufende Funktion durch einen Tastendruck beenden.
Meine Idee war Return.. aber das klappte nicht.HIer mein Programm:
Spoiler anzeigen
[autoit]HotKeySet("{ESC}", "Terminate")
[/autoit] [autoit][/autoit] [autoit]Func Terminate()
[/autoit] [autoit][/autoit] [autoit]
Return
EndFuncFunc 2teFunktion()
[/autoit]
MouseClick("left",$x1,$y3,1,$s)
MouseClick("left",$x2,$y3,1,$s)
EndFunc[
Die Idee ist, dass die 2teFunktion einfach gestoppt wird wenn ich ESC drücke.
Stell dein richtiges Skript ein, denn bei diesem beendet sich die Funktion nach den 2 Mausklicks von alleine. Noch besser ist du nennst das Porg das du automatisieren willst, denn meist gibt es bessere Möglichkeiten als Mausschubser- und -klickerei,
mfg autoBert
-
chip: das ist mir bewust:
[autoit]Alles anzeigen$Encrypt = _StringEncrypt(0, $String, "acas")
[/autoit]
If @error Then
MsgBox(0, "Fehler:", @error)
Else
MsgBox(64, "Text", $Encrypt)
;dass ein Text ausgegeben wird ist normal, da die Routine ja keinen ausgelöst hat
;das er allerdings falsch ist liegt an dem falschen Passwrt
EndIf -
Hallo Julien,
um den krrekt entschlüsselten String zu erhalten musst du auch das korrekte Passwrt verwenden:
Spoiler anzeigen
[autoit]#include <String.au3>
[/autoit]
$String = _StringEncrypt(1, "Ou man du", "c")
$Encrypt = _StringEncrypt(0, $String, "c")
If @error Then
MsgBox(0, "Fehler:", @error)
Else
MsgBox(64, "Text", $Encrypt)
EndIf
$Encrypt = _StringEncrypt(0, $String, "acas")
If @error Then
MsgBox(0, "Fehler:", @error)
Else
MsgBox(64, "Text", $Encrypt)
;dass ein Text ausgegeben wird ist normal, da die Routine ja keinen ausgelöst hat
;das er allerdings falsch ist liegt an dem falschen Passwrt
EndIfmfg autoBert
-
Hallo Julien,
tausche deine Zeile 51 gegen
[autoit]$aLoaclPath = StringSplit($aLines[$i],"/")
[/autoit]
for $j = 1 to $aLoaclPath[0]-1
if Not FileExists($aLoaclPath[$j]) Then DirCreate($aLoaclPath[$j]) ;Lokal benötigte Ordner anlegen
Next
$GetData = InetGet($aFiles[$i][0], @ScriptDir & "\" & StringReplace($aLines[$i],"/","\"), 1, 1) ;im Hintergrunddie Pfadangabe für die jeweilige lokale Datei war falsch, es müssen ja erst noch die Ordner angelegt werden. Ausserdem hattest du vergessen/herauseditiert einen "\" einzufügen.
Da deine Dateien so gross und mein INet so langsam ist habe ich es nicht komplett durchgetestet. Da aber das Array nach dem Ermitteln der Gesamtgrösse für alle 3 Dateien einen Wert angezeigt hat, sollten jetzt auch alle 3 Dateien heruntergeladen werden können,
mfg autoBert
-
Hallo BigldDad,
ich würde daraus ein 2D-Array erzeugen:
Spoiler anzeigen
[autoit]#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global $aDB[2][2]
[/autoit] [autoit][/autoit] [autoit]$sIni = @ScriptDir & "\db.ini"
[/autoit] [autoit][/autoit] [autoit]
$aSections = IniReadSectionNames($sIni)For $i = 1 To $aSections[0]
[/autoit] [autoit][/autoit] [autoit]
$aSection = IniReadSection($sIni, $aSections[$i])
;_ArrayDisplay($aSection)
If $i = 1 Then
ReDim $aDB[$aSections[0] + 1][$aSection[0][0] + 1] ;2DArray dimensionieren
For $j = 1 To $aSection[0][0] ;Spaltenüberschrifeten eintragen
$aDB[0][$j] = $aSection[$j][0]
Next
$aDB[0][0] = $aSections[0]& " / Sectionname" ;Anzahl der Zeilen
EndIf
For $j = 1 To $aSection[0][0]
$aDB[$i][$j] = $aSection[$j][1]
Next
$aDB[$i][0] = $aSections[$i]
Next_ArrayDisplay($aDB)
[/autoit]und mit diesem weiterarbeiten,
mfg autoBert
-
Genau das wollte ich in Spiele verwenden :(....als ziel Hilfe schade...
aber es muss doch irgend wie möglich sein
Dann solltest du dir die Forenregeln durchlesen,mfg autoBert
-
Hallo entsel,
warum liest du nicht mit
[autoit]_FileRadToArray
[/autoit]alles in ein Array, manipulierst dann dort die Daten und schreibst das ganze mit
[autoit]_FileWriteFromArray
[/autoit]wieder in eine Datei,
mfg autoBert
-
Funktioniert das auch für Fenster Modus Anwendungen ?
Es funktiniert für alle Anwendungen die WinApi-Routinen nutzen und nicht selbstständig an Windws vorbei direkt die Grafikkarte ansprechen. Für Spiele ist es also eher nicht geeignet,mfg autoBert
-
Das Skript von BugFix läuft man muss nur die Adlibfunktionen auf die neuen umstellen. Wenn man dann noch zusätzlich 1 Zeile auskommentiert und eine bereits vorhandene an eine 2. Stelle kopiert, läuft es auch bei Vollbildanwendungen, die Scrollbalken haben ohne dass das Fadenkreuz durch Scrollen mehrfach erscheint
Spoiler anzeigen
[autoit]#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
[/autoit] [autoit][/autoit] [autoit]
#AutoIt3Wrapper_UseUpx=n
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <WindowsConstants.au3>
#include <WinAPI.au3>Global $hDC, $hPen, $obj_orig
[/autoit] [autoit][/autoit] [autoit]
Global $active, $lastActive = 0
HotKeySet("!e", '_ende')AdlibRegister('_SetCrossToActive',500)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _SetCrossToActive()
[/autoit] [autoit][/autoit] [autoit]
$active = WinGetHandle('[ACTIVE]')
;If $lastActive = $active Then Return
;$lastActive = $active
_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, BitOR($RDW_INVALIDATE,$RDW_ALLCHILDREN))
$hDC = _WinAPI_GetWindowDC($active)
ShowCross($hDC, @DesktopWidth / 2, @DesktopHeight / 2, 20, 2, 0xFF)
EndFuncFunc ShowCross($hDC, $start_x, $start_y, $length, $width, $color)
[/autoit] [autoit][/autoit] [autoit]
$hPen = _WinAPI_CreatePen($PS_SOLID, $width, $color)
$obj_orig = _WinAPI_SelectObject($hDC, $hPen)
_WinAPI_DrawLine($hDC, $start_x - $length, $start_y, $start_x - 5, $start_y) ; horizontal left
_WinAPI_DrawLine($hDC, $start_x + $length, $start_y, $start_x + 5, $start_y) ; horizontal right
_WinAPI_DrawLine($hDC, $start_x, $start_y - $length, $start_x, $start_y - 5) ; vertical up
; _WinAPI_DrawLine($hDC, $start_x, $start_y + $length, $start_x, $start_y + 5) ; vertical down
_WinAPI_MoveTo($hDC, $start_x, $start_y + $length)
_WinAPI_LineTo($hDC, $start_x, $start_y + 5)
EndFunc ;==>ShowCrossFunc _ende()
[/autoit]
AdlibUnRegister('_SetCrossToActive')
_WinAPI_RedrawWindow(_WinAPI_GetDesktopWindow(), 0, 0, BitOR($RDW_INVALIDATE,$RDW_ALLCHILDREN))
_WinAPI_SelectObject($hDC, $obj_orig)
_WinAPI_DeleteObject($hPen)
_WinAPI_ReleaseDC(0, $hDC)
Exit
EndFuncmfg autoBert
-
Hallo Fr34k,
hier ein Beispiel das den Extended-Modus von GuiGetMsg verwendet:
Spoiler anzeigen
[autoit]#include <GUIConstantsEx.au3>
[/autoit] [autoit][/autoit] [autoit]
#include<WindowsConstants.au3>Global $idGui1, $idGui2=-99, $idMsgBox, $idZurueck, $idbtnExit2
[/autoit] [autoit][/autoit] [autoit]
_CreateGui2() ;entweder hier oder erst wenn benötigt ($idbtmToGui2 Klick)$idGui1 = GUICreate('GUI 1', 400, 280, 140, 150, BitOR($WS_MINIMIZEBOX, $WS_MAXIMIZEBOX, $WS_SIZEBOX))
[/autoit] [autoit][/autoit] [autoit]
;erzeugt eine GUI die zurückgebebene ID wird in der Variablen $idGui1 gespeichert
;die GUI hat BOXen für Mininmieren, Maximieren und ist in der Größe frei änderbar
GUISetOnEvent($GUI_EVENT_CLOSE, '_End')$idbtnToGui2 = GUICtrlCreateButton('&Aufruf GUI 2', 20, 20, 100, 21)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand$idbtnICQ = GUICtrlCreateButton('&ICQ', 20, 50, 100, 21)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "ICQ" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand$idbtnExit1 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "Afruf Gui 2" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten RandGUISetState(@SW_SHOW, $idGui1)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg(1) ;extended Modus wichtig!!
Switch $nMsg[1] ;für welches Fenster ist die Message
Case $idGui1 ;ab hier ist Gui 1 dran
Switch $nMsg[0] ;welche Message wurde ausgelöst
Case $idbtnToGui2
;GUISetState(@SW_Hide, $idGui1) ;Gui 1 verstecken, damit nur Gui2 sichtbar ist und bearbeitet werden kann
GUISetState(@SW_DISABLE, $idGui1) ;oder Gui 1 disablen, damit nur Gui2 bearbeitet werden kann
;If $idGui2 = -99 Then _CreateGui2() ;nur wenn nicht am Anfang bereits erzeugt nötig, dann auf Vorbelegung der Variable in Global achten)
GUISetState(@SW_SHOW, $idGui2) ;Gui 2 anzeigen
Case $idbtnICQ
MsgBox(0,"","Jetzt würde ICQ gestartet",0,$idGui1)
;Run("C:\Program Files\ICQ7.0\ICQ.exe")
Case $idbtnExit1, $GUI_EVENT_CLOSE
_end()
EndSwitch
Case $idGui2 ;ab hier ist Gui 2 dran
Switch $nMsg[0] ;welche Message wurde ausgelöst
Case $idMsgBox
MsgBox(0, 'Test', 'Test', 0, $idGui2)
Case $idZurueck, $GUI_EVENT_CLOSE
;GUISetState(@SW_Show, $idGui1) ;Gui 1 wieder anzeigen
GUISetState(@SW_ENABLE, $idGui1) ;oder Gui 1 wieder zur Bearbeitung zulsassen
GUISetState(@SW_HIDE, $idGui2) ;Gui 2 verstecken
Case $idbtnExit2
_end()
EndSwitch
EndSwitch
WEndFunc _CreateGui2()
[/autoit] [autoit][/autoit] [autoit]
$idGui2 = GUICreate('GUI 2', 500, 300, 200, 50, -1, -1, $idGui1) ;wichtig ist der letzte Parameter falls beide gleichzeitig sichtbar sein sollen
;erzeugt eine GUI als Child von Gui1, die zurückgebebene ID wird in der Variablen $idGui2 gespeichert$idMsgBox = GUICtrlCreateButton('&MsgBox', 20, 20, 100, 21)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "MsgBox" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand$idZurueck = GUICtrlCreateButton('&Zurück zu GUI 1', 20, 50, 100, 21)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "zurück" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand$idbtnExit2 = GUICtrlCreateButton('be&enden', 20, 80, 100, 21)
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetResizing(-1, $GUI_DOCKSIZE + $GUI_DOCKLEFT + $GUI_DOCKTOP)
;verankert den Button "beenden" links und oben und fixiert die Größe
;beim Resizen bleibt es dadurch auf seiner Position am rechten Rand
EndFunc ;==>_CreateGui2Func _end()
[/autoit] [autoit][/autoit] [autoit][/autoit]
GUIDelete($idGui2)
GUIDelete($idGui1)
Exit
EndFunc ;==>_endmfg autoBert
-
Hallo Julien,
dein Konzept kann nicht funktionieren:
- Bei der func _add speciherst du nur die Dateinamen, zum uploaden benötigst du aber den kompletten lkalen Pfad. Die Auswahl einer einzigen Datei funktioniert auch nicht. Wie man bei FilepenDialog zwischen Einfach- und Mehrfachauswahl unterscheiden und beides behandeln kann habe ich in [Beispiel] BMP-, GIF- & JPG-Viewer demonstriert. Desweiteren zeigt dieses Beispiel wie man die Pfade für den Benutzer unsichtbar in einer Listview speichert.
- Bei der func _addfolder lässt du nur Laufwerk c: zu. Dein Fehler ist $FileList[0] enthält die Anzahl der gefundenen Dateien, anstelle dessen müsstest du "c:\" & $Foldername verwenden. Besser nch du lässt alle LW zu und nimmst den LW-Buchstaben nch mit in Foldername auf.
mfg autoBert
-
Hallo ,
passe einmal dieses Skript (Benutzerdaten, Dateipfade) auf dich an:
Spoiler anzeigen
[autoit]#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
[/autoit] [autoit][/autoit] [autoit]
#include <FTPEx.au3>
#include <Misc.au3>Opt('MustDeclareVars', 1)
[/autoit] [autoit][/autoit] [autoit]_example1()
[/autoit] [autoit][/autoit] [autoit]#cs
[/autoit] [autoit][/autoit] [autoit]
Beispiel mit externem Progressfenster zur Demostration der Fortschrittsanzeige mit einer Benutzerfunktion
#ce
Func _example1()
Local $s_ServerName = 'autobert.myplace.net' ;dieser Server existiert nicht anpassen
Local $s_Username = "autobert" ;anpassen
Local $s_Password = "TopSecret" ;anpassen
Local $i_Passive = 0 ;aktive Verbindung nutzen wenn bei anderen Server Probleme dann auch mit 1 für passive Verbung testenLocal $s_LocalFile = "C:\test.zip"
[/autoit] [autoit][/autoit] [autoit]
Local $s_RemoteFile = "test.zip"
Local $s_RemoteDir = "/FTPTestfiles/" ;anpassen
Local $l_InternetSession, $l_FTPSession
Local $errOpen, $errFTP$l_InternetSession = _FTP_Open('AuoItZilla') ;Öffnet eine FTP Sitzung
[/autoit] [autoit][/autoit] [autoit]
$errOpen = @error
If Not @error Then
$l_FTPSession = _FTP_Connect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_Passive) ;Verbindet zu einem FTP Server
$errFTP = @error
If Not @error Then
_FTP_DirSetCurrent($l_FTPSession,$s_RemoteDir)
ConsoleWrite(_FTP_DirGetCurrent($l_FTPSession) & @CRLF)
_FTP_ProgressUpload($l_FTPSession, $s_LocalFile, $s_RemoteFile,"_UpdateProgress")
If @error Then ConsoleWrite("Fehler bei _FTP_ProgressUpload: " & @error & @CRLF)
Else
MsgBox(0, "Connect", "fehlgeschalagen")
ConsoleWrite("Connect: " & " " & $errFTP & @CRLF)
EndIf
Else
MsgBox(0, "Open", "fehlgeschalagen")
ConsoleWrite("Open " & " " & $errOpen & @CRLF)
EndIf
_FTP_Close($l_InternetSession)
EndFunc ;==>_example1Func _UpdateProgress($i_Percent)
[/autoit]
ProgressSet($i_Percent, $i_Percent & "%")
If _IsPressed("77") Then Return 0 ; Abbruch bei F8
Return 1 ; bei 1 Fortsetzten
EndFunc ;==>_UpdateProgressin der Scite-Knsole kannst du erkennen w ein evtl. Fehler liegt,
mfg autoBert
-
Hallo Julien,
- öffne die Datei mit Scite oder mit Wrdpad, da wird sie richtig dargestellt.
-
ist über InetGet nicht möglich, ginge wohl mit FTP, falls du einen FTP-Account einrichten kannst, der in einem bestimmten Bereich nur Leserechte hat ist dies kein Problem. Wenn der Account allerdings Schreibrechte auf deinem Webspace hat kannst du die Idee ganz schnell vergessen, da ansnsten dein Account ganz schnell von jemand Fremden übernommen wird.
Falls du dich mit FTP beschäftigen willst, schau dir dazu [autoit]
_FTP_FileOpen
_FTP_Connect
_FTP_ListToArray2D
_FTP_FileGet
_FTP_Close
[/autoit]aq.
mfg autoBert
-
Hall Julien,
ich habe das Skripz nch einmal geändert:
Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <INet.au3>
#include <File.au3>
#include <String.au3>
#include <Array.au3>Global $aLines, $sMsg, $sMsg2
[/autoit] [autoit][/autoit] [autoit]$GUI = GUICreate("Patcher", 615, 419, 192, 124)
[/autoit] [autoit][/autoit] [autoit]
$GesamtProgress = GUICtrlCreateProgress(8, 312, 590, 25)
$EinzelProgress = GUICtrlCreateProgress(8, 376, 590, 25)
$ButtonPatchen = GUICtrlCreateButton("Patchen", 520, 16, 75, 25)
$ButtonBeenden = GUICtrlCreateButton("Beenden", 520, 56, 75, 25)
$LGesamtfortschritt = GUICtrlCreateLabel("Gesamtfortschritt", 8, 288, 590, 17)
$LabelDownladdatei = GUICtrlCreateLabel("", 8, 352, 590, 17)
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 istWhile 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonPatchen
$PatchlistLoad = InetGet("http://white1991x.square7.ch/Patchlist.txt", @ScriptDir & "/Source.txt", 1, 0) ;wartet bsi fertig
InetClose($PatchlistLoad)
_FileReadToArray(@ScriptDir & "\Source.txt", $aLines)
_ArrayDisplay($aLines)
If StringInStr($aLines[$aLines[0]], 'Bytes Total : "') Then ;letzte Zeile enthält die Gesamtbytes
$GesamtBytes = _StringBetween($aLines[$aLines[0]], 'Bytes Total : "', '"')
Else
$GesamtBytes = 0
Dim $aFiles[$aLines[0] + 1][2]
For $i = 1 To $aLines[0]
If $aLines[$i] <> "" Then
$aFiles[$i][0] = "http://white1991x.square7.ch/" & $aLines[$i]
$aFiles[$i][1] = InetGetSize($aFiles[$i][0])
$aFiles[0][1] += $aFiles[$i][1]
EndIf
Next
EndIf
$aFiles[0][0] = $aLines[0]
_ArrayDisplay($aFiles)
$iDownloaded = 0
For $i = 1 To $aFiles[0][0]
If $aFiles[$i][1] <> 0 Then
$GetData = InetGet($aFiles[$i][0], @ScriptDir & "\" & $aLines[$i], 1, 1) ;im Hintergrund
GUICtrlSetData($LabelDownladdatei, $aFiles[$i][0] & ": ")
Do
$aInfo = InetGetInfo($GetData)
$iPercentAll = Round(($iDownloaded + $aInfo[0]) / $aFiles[0][1] * 100, 2)
$iPercentCurrent = Round($aInfo[0] / $aFiles[$i][1] * 100, 2)
GUICtrlSetData($GesamtProgress, $iPercentAll)
GUICtrlSetData($EinzelProgress, $iPercentCurrent)
GUICtrlSetData($LGesamtfortschritt, "Gesamtfortschritt: " & $iPercentAll & "%")
GUICtrlSetData($LabelDownladdatei, $aFiles[$i][0] & ": " & $iPercentCurrent & "%")
ConsoleWrite($iDownloaded + $aInfo[0] & " " & $aFiles[0][1] & " " & $iPercentAll & @TAB & $aInfo[0] & " " & $aFiles[$i][1] & " " & $iPercentCurrent & @CRLF)
Sleep(1000)
Until $aInfo[2]
#cs
[0]|4|11018458
[1]|http://white1991x.square7.ch/Test2.txt|7345648
[2]|http://white1991x.square7.ch/Test1.txt|3672810
[3]|http://white1991x.square7.ch/Bytes Total : "11018458"|0
#ce
If $aInfo[3] Then ;wenn erfolgreich
$iDownloaded += $aInfo[0]
$sMsg &= $aFiles[$i][0] & @CRLF
Else
$sMsg2 &= $aFiles[$i][0] & @CRLF
EndIf
InetClose($GetData)
EndIf
Next
if $sMsg <> "" Then MsgBox(64, "Download beendet","Folgende Dateien wurden erfolgreich heruntergeladen:" & @CRLF & @CRLF & $sMsg)
if $sMsg2 <> "" Then MsgBox(16, "Download beendet","Folgende Dateien konnten nicht heruntergeladen werden:" & @CRLF & @CRLF & $sMsg)
EndSwitch
WEnd;### Tidy Error -> switch is never closed in your script.warum die Dateien bei mir nicht komplett heruntergeladen werden kann ich nicht nachvllziehen. Seltsamerweise wird aber kein Fehler erzeugt, jedenfalls ist Datei1.txt 815608 Bytes gross und nicht wie InetGetSize zurückliefert 3672810. Datei2.txt ist 801688 Bytes gross, InetGetsize liefert aber 7345648 Bytes als Grösse. Da die Summe der mit Inetgetsize zurückgegebenen Grössen die gleiche Grösse (11018458) ergeben die du ermittlelt hast gehe ich davon aus dass die Dateien fehlerhaft heruntergeladen werden.
mfg autoBert
-
Hallo Julien,
so sollte es klappen:
Spoiler anzeigen
[autoit]#RequireAdmin
[/autoit] [autoit][/autoit] [autoit]
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <INet.au3>
#include <File.au3>
#include <String.au3>
#include <Array.au3>Global $aLines
[/autoit] [autoit][/autoit] [autoit]$GUI = GUICreate("Patcher", 615, 419, 192, 124)
[/autoit] [autoit][/autoit] [autoit]
$GesamtProgress = GUICtrlCreateProgress(8, 312, 590, 25)
$EinzelProgress = GUICtrlCreateProgress(8, 376, 590, 25)
$ButtonPatchen = GUICtrlCreateButton("Patchen", 520, 16, 75, 25)
$ButtonBeenden = GUICtrlCreateButton("Beenden", 520, 56, 75, 25)
$LGesamtfortschritt = GUICtrlCreateLabel("Gesamtfortschritt", 8, 288, 83, 17)
$LabelProzent = GUICtrlCreateLabel("Prozent", 104, 288, 40, 17)
$LabelDownladdatei = GUICtrlCreateLabel("", 8, 352, 137, 17)
$Prozen = GUICtrlCreateLabel("", 176, 352, 37, 17)
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 istWhile 1
[/autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $ButtonPatchen
$PatchlistLoad = InetGet("http://white1991x.square7.ch/Patchlist.txt", @ScriptDir & "/Source.txt", 1, 0) ;wartet bsi fertig
InetClose($PatchlistLoad)
_FileReadToArray(@ScriptDir & "\Source.txt",$aLines)
_ArrayDisplay($aLines)
If StringInStr($aLines[$aLines[0]], 'Bytes Total : "') Then ;letzte Zeile enthält die Gesamtbytes
$GesamtBytes = _StringBetween($aLines[$aLines[0]], 'Bytes Total : "', '"')
Else
$GesamtBytes = 0
For $i = 1 To $aLines[0]
$GesamtBytes += InetGetSize("http://white1991x.square7.ch/" & $aLines[$i])
Next
EndIf
; ConsoleWrite($GesamtBytes & @CRLF)
$iDownloaded = 0
For $i = 1 To $aLines[0]
$iSize = InetGetSize($aLines[$i])
$GetData = InetGet("http://white1991x.square7.ch/" & $aLines[$i], @ScriptDir & "\" & $aLines[$i], 1, 1) ;im Hintergrund
Do
$aInfo = InetGetInfo($GetData)
GUICtrlSetData($GesamtProgress, $iDownloaded + $aInfo[0] / $GesamtBytes * 100)
GUICtrlSetData($EinzelProgress, $aInfo[0] / $iSize * 100)
Until $aInfo[2]
$iDownloaded += $aInfo[0]
InetClose($GetData)
Next
EndSwitch
WEndda ich eine sehr langsames INet habe, habe ich das Skript aber nicht komplett durchgetestet,
mfg autoBert
-
Hallo Julien,
nimm statt GuiCtrlRead für das RichEditCntro _GUICtrlRichEdit_GetText. Desweiteren slltest du noch eine Abbruchbedingung einbauen snst kmmst du nie aus der 2. Schleife. Ich würde es s machen:
[autoit]Case $Start
[/autoit]
$Counter1 = 1
$Counter2 = 0
$i = 0
$l = _GUICtrlRichEdit_GetTextLength($Edit1)
Do
If StringMid(_GUICtrlRichEdit_GetText($Edit1), $Counter1, 1) = StringMid(GUICtrlRead($Input1), $Counter1, 1) Then
$Markieren = _GuiCtrlRichEdit_SetSel($Edit1, $Counter2, $Counter1)
_GUICtrlRichEdit_SetCharColor($Edit1, 0x00FF00)
_GUICtrlRichEdit_Deselect($Edit1)
$Counter1 += 1
$Counter2 += 1
EndIf
$i+= 1
Until $i > $lmfg autoBert
-
Hallo John,
an einer Bilddatei kann niemand seine Ideen antesten stelle also besser die Datei (umbenennen) in deinem Eröffnungsbeitrag als Anhang ein,
mfg autoBert
-
Ich weis zwar nicht ob jemand das braucht, aber ich habe hier über 3.600 Icons

Alles *.ico-Dateien
Liegen denn die Urheberrechte aller Icns bei dir? Nicht dass irgedwann eine Abmahnung kommt wenn ich eines verwende,
mfg autBert