Terenz Posted March 18, 2015 Posted March 18, 2015 (edited) Hi, Everytime is always hard for me to explain all the situation So, i need to "monitor" a file download from a different software, example this file is called: File1.exe.part Of this file i know the original size, File1.exe, example it is 10MB I'm using Adlib in this way: AdlibRegister("_Monitor") Func __Monitor() Local Static $iStartingSize = 10000 ; 10MB, i'll change the value dinamically Local $iCurrentSize = FileGetSize("File1.exe.part") If $iCurrentSize <> $iPreviousSize Then $iPreviousSize = $iCurrentSize GUICtrlSetData($hProgress, Int($iCurrentSize / ($iStartingSize) * 100)) EndIf EndFunc ;==>__MonitorFile_Crypt Until that work, i'm fill the progressbar at 100% and i know when is done using WinGetHandle of the original software for stopping it. But with 1 file... but i have more than 1 Example if i have 4 file the progressbar need to fill at 100% only if all the files are download. Pratically from 0 to 25% file 1, from 25% to 50% file 2 but always base this value on the real size of the file. The question is, How to use GUICtrlSetData for partially fill the progressbar like from 0-25 25-50 instead of from 0 to 100% but always based on filesize? If something is not clear...i can't post any code this time i don't know how to reproduce the script Edited March 18, 2015 by Terenz Nothing is so strong as gentleness. Nothing is so gentle as real strength
UEZ Posted March 18, 2015 Posted March 18, 2015 (edited) How about to create 2 progress bars - 1 for current download and 2 for overall? Edited March 18, 2015 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Terenz Posted March 18, 2015 Author Posted March 18, 2015 I prefer only one for everything, i'll use your suggestion only if no other solution avaiable. Nothing is so strong as gentleness. Nothing is so gentle as real strength
zalomalo Posted March 18, 2015 Posted March 18, 2015 (edited) Do you know the sizes of every file before download ?. If so, its inmediate, dont ? Edited March 18, 2015 by zalomalo My english shucks, i know it.
UEZ Posted March 18, 2015 Posted March 18, 2015 Here a way: Global Const $hGUI = GUICreate("Test", 600, 300) Global Const $iLabel = GUICtrlCreateLabel("", 10, 50, 580, 90) GUICtrlSetFont(-1, 50) Global Const $iProgressbar = GUICtrlCreateProgress( 10, 200, 580, 20) GUISetState() Global $aFile[4][3] = [["File1.exe", 0, 50], ["File2.exe", 0, 100], ["File3.exe", 0, 75], ["File4.exe", 0, 25]] Global $iFiles = UBound($aFile), $iPart = 0 AdlibRegister("Progress", 100) Do Switch GUIGetMsg() Case -3 AdlibUnRegister("Progress") Exit EndSwitch Until False Func Progress() GUICtrlSetData($iLabel, $aFile[$iPart][0]) GUICtrlSetData($iProgressbar, ($aFile[$iPart][1] / $aFile[$iPart][2] * 100) * 1 / $iFiles + ($iPart * 100 / $iFiles)) WinSetTitle($hGUI, "", StringFormat("%.2f %", ($aFile[$iPart][1] / $aFile[$iPart][2] * 100) * 1 / $iFiles)) $aFile[$iPart][1] += 1 If $aFile[$iPart][1] > $aFile[$iPart][2] Then $iPart += 1 GUISetBkColor(Random(0x400000, 0x800000, 1), $hGUI) EndIf If $iPart >= $iFiles Then AdlibUnRegister("Progress") EndFunc Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Terenz Posted March 19, 2015 Author Posted March 19, 2015 (edited) UEZ i have some problem, sometimes i have strange value that make the progressbar crazy See in 7-13-8 or 28-57-28 and so on. Do you know how i can resolve? EDIT: I'm still working on it Edited March 19, 2015 by Terenz Nothing is so strong as gentleness. Nothing is so gentle as real strength
UEZ Posted March 19, 2015 Posted March 19, 2015 I assume that your $iCurrentSize and/or $iStartingSize value(s) "go(es) crazy"! Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ
Terenz Posted March 19, 2015 Author Posted March 19, 2015 Probably but with only one file using Int($iCurrentSize / ($iStartingSize) * 100) i don't have any problems Instead using that formula still having issue, i'm debugging my code for check if there are any error but for now i don't have found nothing Nothing is so strong as gentleness. Nothing is so gentle as real strength
Terenz Posted April 2, 2015 Author Posted April 2, 2015 (edited) I'm reup the thread again because my values goes crazy so i need to change approach. Assuming i know this time the total file size of all the files: Global $aFile[4][3] = [["File1.exe", 0, 50], ["File2.exe", 0, 100], ["File3.exe", 0, 75], ["File4.exe", 0, 25]] Global $iFiles = UBound($aFile), $iTotalbyte = 250, $iPart = 0 And i want to check "byte by byte" until i reach $iTotalbyte, always one progressbar for all, what is the formula to apply? Thanks again Because if i'm using Int($iCurrentSize / ($iTotalbyte) * 100)) for the value $iCurrentSize i have something like: 0 120 150 ; end of file 0 12 35 ; end of file 0 etc. So the progress start from zero each time and not from the previus size...and i can't sum value or it will be more then the $iTotalbyte ( example $iTotalbyte = 185 - 0+120+150+0+12+35 = too much instead 150+35=185 but with a progress bar ) Edited April 2, 2015 by Terenz Nothing is so strong as gentleness. Nothing is so gentle as real strength
SadBunny Posted April 2, 2015 Posted April 2, 2015 ConsoleWrite the values every time you perform the calculation, this should indicate what is going wrong. Roses are FF0000, violets are 0000FF... All my base are belong to you.
Terenz Posted April 2, 2015 Author Posted April 2, 2015 (edited) If i know what calculation i need to do...post #5 was correct but i can't apply to my case so i need to chage approach and using the current byte / total byte instead of splitting the progress bar in "parts" like that post do. Edited April 2, 2015 by Terenz Nothing is so strong as gentleness. Nothing is so gentle as real strength
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now