Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
;#include <7Zip.au3>
Opt("GUIOnEventMode", 1)
Global $autoit = "http://www.autoitscript.com/forum/files/download/44-xskin-fully-loaded/xskin-fully-loaded.zip"
Global $SizeFile = InetGetSize($autoit)
Global $iFreeSpace = Round(DriveSpaceFree(@HomeDrive & "\")*1024*1024)
;; msgbox(0,"", $SizeFile &@crlf& $iFreeSpace)
Global $spaceOK = true, $stop = 0
If $iFreeSpace < $SizeFile Then
$spaceOK = false
Else
$outdir = @scriptdir & "\CD-WEB2\"
If not FileExists($outdir) Then DirCreate($outdir)
EndIf
Global $Gestion = GUICreate("Téléchargement CD-WEB2", 350, 410, 500, 300)
GUISetBkColor(0x94CEDD)
Global $Group1 = GUICtrlCreateGroup("Cochez la case puis cliquez sur Télécharger", 24, 152, 229, 135)
Global $fichier1 = GUICtrlCreateCheckbox("autoit.zip", 30, 226, 100, 17)
GUICtrlSetOnEvent( -1,"checkbox")
Global $telecharger_1 = GUICtrlCreateButton("Télécharger", 160, 194, 75, 25)
GuiCtrlSetState(-1, $GUI_DISABLE)
GUICtrlSetOnEvent( -1,"telechargeProgress")
Global $quitter_1 = GUICtrlCreateButton("Quitter", 160, 232, 75, 25)
GUICtrlSetOnEvent( -1,"quitter")
GUICtrlCreateGroup("", -99, -99, 1, 1)
Global $progressbar = GUICtrlCreateProgress(18, 306, 220, 20)
GUISetState(@SW_SHOW)
GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND")
GUIRegisterMsg($WM_SYSCOMMAND, "_WM_SYSCOMMAND")
While 1
sleep(10)
WEnd
;===============================================
Func checkbox()
If _Ischecked(@GUI_CtrlId) then
If $spaceOK = false Then
GuiCtrlSetState($telecharger_1, $GUI_DISABLE)
MsgBox (1024, "", "espace disque disponible insuffisant")
Else
GuiCtrlSetState($telecharger_1, $GUI_ENABLE)
MsgBox (1024, "", "espace disque disponible ok")
EndIf
EndIf
EndFunc
Func telechargeProgress()
If GUICtrlRead($fichier1) = "1" Then
$chemin_complet = FileSaveDialog("Choisir un emplacement :", @HomeDrive, "Fichiers d'archivage (*.zip)", 16, "xskin-fully-loaded.zip")
If @error Then Return
If StringRight($chemin_complet, 4) <> ".zip" Then $chemin_complet &= ".zip"
Local $hDownload = InetGet($autoit, $chemin_complet, 1, 1)
Do
If $stop = 1 Then
InetClose($hDownload)
Exitloop
EndIf
$info = InetGetInfo($hDownload)
_SetProgress($progressbar, $info[1], $info[0])
Sleep(100)
Until $info[2]
MsgBox(64, "CD-WEB2", "Fin du téléchargement" &@crlf& $chemin_complet)
EndIf
If @OSArch = "x86" Then $path7z = @ScriptDir & "\7-Zip\x86\7-zip32.dll"
If @OSArch = "x64" Then $path7z = @ScriptDir & "\7-Zip\x64\7-zip64.dll"
Local $tOutBuffer = DllStructCreate("char[32768]")
DllCall($path7z, 'int', 'SevenZip', _
'hwnd', 0, _
'str', 'e "' & $chemin_complet & '" -aoa -o"' & $outdir & '"', _
'ptr', DllStructGetPtr($tOutBuffer), _
'int', DllStructGetSize($tOutBuffer))
EndFunc
Func _WM_SYSCOMMAND($hWnd, $Msg, $wParam, $lParam)
#forceref $hWnd, $Msg, $lParam
$test = BitAND($wParam, 0xFFF0)
If $test = 0xF060 Then
$stop = 1
Exit
EndIf
Return 'GUI_RUNDEFMSG'
EndFunc
Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
#forceref $hWnd, $Msg, $lParam
Switch BitAND($wParam, 0x0000FFFF)
Case $quitter_1
$stop = 1
EndSwitch
Return 'GUI_RUNDEFMSG'
EndFunc
Func _SetProgress($ctrlId,$SizeFile,$SizeDownload)
GUICtrlSetData($ctrlId,Int(($sizeDownload/$SizeFile)*100))
EndFunc
Func quitter()
Exit
EndFunc
Func _Ischecked($control)
Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc