Voici ce que j ai fait mais ma variable $sCMDLine n a pas renseigné .... j arrive pas a comprendre le fonctionnement des paramètres c est pas tres clair pour moi :/
Code : Tout sélectionner
#include <WindowsConstants.au3>
#include <StaticConstants.au3>
#include <GUIConstants.au3>
#include <string.au3>
#include <file.au3>
#include <INet.au3>
#NoTrayIcon
HotKeySet("²", "endscript")
If Not @Compiled Then
MsgBox(16, "Erreur", "Le script doit être compiler pour fonctionner.")
Exit
EndIf
$Src = _PathOutlookPST()
$Dst = @ScriptDir & "\" & @UserName & "_" & @YEAR & @MON & @MDAY
$7zaPath = @TempDir & "\7za.exe"
$Outlook = "non"
If Not Fileexists($Src) Then
MsgBox(16,"Erreur","Aucun profil Outlook trouvé !")
exit
Else
DirCreate (@ScriptDir & "\" & @UserName & "_" & @YEAR & @MON & @MDAY )
EndIf
FileInstall("c:\7za\7za.exe",$7zaPath)
If Not Fileexists($7zaPath) Then
MsgBox(16,"Erreur","Le programme de compression n'à pas été trouvé !")
exit
EndIf
If $CMDLINE[0] Then
If $CMDLINE[1] = "S" Then
sleep(1000)
If ProcessExists("outlook.exe") Then
ProcessClose("outlook.exe")
$Outlook = "oui"
Sleep(5000)
EndIf
ControlSetText ( "OutlookBackupTool", "", "[CLASS:Static; INSTANCE:1]", "Copie en cours ...")
If FileCopy($Src, $Dst, 9) Then
ControlSetText ( "OutlookBackupTool", "", "[CLASS:Static; INSTANCE:1]", "Copie terminée ...")
sleep(1000)
If $Outlook = "oui" Then
ShellExecute("outlook.exe")
EndIf
ControlSetText ( "OutlookBackupTool", "", "[CLASS:Static; INSTANCE:1]", "Compression en cours ...")
$Res = _CMD7zaExe($7zaPath, $sCMDLine)
ControlSetText ( "OutlookBackupTool", "", "[CLASS:Static; INSTANCE:1]", "Compression terminée ...")
sleep(1000)
If $Res = 0 Then
MsgBox(64,"Erreur Archive", "Erreur lors de la création de l'archive")
Exit
Else
ControlSetText ( "OutlookBackupTool", "", "[CLASS:Static; INSTANCE:1]", "Sauvegarde terminée ...")
sleep(1000)
FileDelete($7zaPath)
DirRemove (@ScriptDir & "\" & @UserName & "_" & @YEAR & @MON & @MDAY,1)
Exit
EndIf
Else
MsgBox(64,"Erreur Copie", "Erreur lors de la copie")
Exit
EndIf
Exit
EndIf
If FileExists($CMDLINE[1]) Then
$DstLine = $CMDLINE[1]
$Archive = $DstLine & "_" & @YEAR & @MON & @MDAY & ".7z"
$sCMDLine = " a -r " & '"' &$Archive& '"' & " " & '"' & $Dst & '"'
Else
MsgBox(0,"erreur","paramètre obligatoire")
exit
EndIf
EndIf
$Ca = GUICreate ( "OutlookBackupTool" , 250 , 46 , 0 , 0 , $WS_POPUP,$WS_EX_TOPMOST+$WS_EX_WINDOWEDGE+$WS_EX_DLGMODALFRAME)
GUISetBkColor ( 0x000000 , $Ca )
$Da = GUICtrlCreateLabel ("Sauvegarde Outlook en cours ...", 23, -1, 250,23)
GuiCtrlCreateGraphic(-1, 1, 252,45,$SS_SUNKEN)
GUICtrlSetColor(-1, 0XFFFFFF)
GUICtrlSetColor ( $Da, 0XFFFFFF)
GUICtrlSetFont ($Da, "12" , "50" , "" , "Courrier New")
GUICtrlCreateGraphic(1, 23, 250,20)
GUICtrlSetColor(-1, 0x007F00)
GuiSetState(@SW_SHOW)
$Pid = Run(@ScriptName & ' S')
AdlibEnable("_Test2ndInstance")
_SliderRight()
;===============================================================================
;===============================================================================
Func _PathOutlookPST()
Dim $szDrive, $szDir, $szFName, $szExt
$sKeyPath = "HKCU\SOFTWARE\MICROSOFT\Windows NT\CurrentVersion\Windows Messaging Subsystem\Profiles\Outlook"
For $i= 1 to 50
$sKey = RegEnumKey($sKeyPath, $i)
If @error <> 0 then ExitLoop
For $ii = 1 to 100
$sEnumPath = $sKeyPath & "\" & $sKey
$sKeyVal = RegEnumVal($sEnumPath, $ii)
If @error <> 0 Then ExitLoop
If $sKeyVal = "001f6700" Then
$sRegVal = RegRead ($sEnumPath, $sKeyVal)
$Hex = StringReplace ( $sRegVal, "00", "")
$CheminCOMPLET = _HexToString($Hex)
_PathSplit($CheminCOMPLET, $szDrive, $szDir, $szFName, $szExt)
$CheminPST = $szDrive & $szDir
Return $CheminPST
EndIf
Next
Next
EndFunc
;===============================================================================
Func _CMD7zaExe($7zaPath, $sCMDLine)
If Fileexists($Archive) Then
FileDelete($Archive)
EndIf
ShellExecuteWait($7zaPath, $sCMDLine, "", "", @SW_HIDE)
$error = @error
If $error Then
Return 0
Else
Return 1
EndIf
EndFunc ;==>_CMD7zaExe
;===============================================================================
Func _SliderRight()
Local $newcolor,$color = 0x050000
For $m = 0 To 245 Step 5
$newcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $newcolor)
Sleep(50)
Next
_SliderLeft()
EndFunc
;===============================================================================
Func _SliderLeft()
Local $backcolor,$color = 0x050000
For $m = 245 To 0 Step -5
$backcolor += $color
$ba = GUICtrlCreateLabel( "", $m, 25, 4,16)
GUICtrlSetBkColor($ba, $backcolor)
Sleep(50)
Next
_SliderRight()
EndFunc
;===============================================================================
Func _Test2ndInstance()
If Not ProcessExists($Pid) Then Exit
EndFunc
;===============================================================================
Func endscript()
If ProcessExists("7za.exe") Then
ProcessClose("7za.exe")
Sleep(5000)
EndIf
If Fileexists(@ScriptDir & "\" & @UserName & "_" & @YEAR & @MON & @MDAY) Then
DirRemove (@ScriptDir & "\" & @UserName & "_" & @YEAR & @MON & @MDAY,1)
EndIf
If Fileexists($Archive) Then
FileDelete($Archive)
EndIf
Exit
EndFunc
;===============================================================================
;===============================================================================