Code : Tout sélectionner
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=image\etoile_48.ico
#AutoIt3Wrapper_outfile=SauveMoi_01.exe
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.0.0
Author: Cyberyeye
Email: Cyberyeye@gmail.com
Script Function: Backup / Sauvegarde
Voir topic: http://www.autoitscript.fr/forum/viewtopic.php?f=4&t=2177
Merci à Tlem pour son aide précieuse !
ToDo:
- Onglet XP: bouton restaurer et checkbox lié
- Onglet Vista: bouton sauvegarder et restaurer + checkbox
- Ajouter un progressBar fonctionnel lier au bouton / checkbox
Note: Seul le bouton Sauvegarder de l'onglet XP est fonctionnel actuellement !
#ce ----------------------------------------------------------------------------
; Modules utilisés
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <TabConstants.au3>
#include <WindowsConstants.au3>
; Icone systray
Opt("TrayMenuMode", 1)
TraySetClick("9")
$Systray = TrayCreateItem("Fermer")
TraySetIcon("image\etoile_48.ico")
;Creation de la GUI
$FormGUI = GUICreate("SauveMoi 0.1 alpha", 550, 360, 339, 120)
GUISetIcon("image\etoile_48.ico")
GUISetBkColor(0xE3E1E4)
;Logo
GUICtrlCreatePic("image\Logo_Sauvemoi.jpg", 0, 0, 550, 100, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
;Creation de la Tab Principal
GUICtrlCreateTab(12, 119, 528, 230)
GUICtrlSetFont(-1, 8, 800, 0, "Arial")
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH+$GUI_DOCKHEIGHT)
;Tab onglet XP
;************
GUICtrlCreateTabItem("XP")
GUICtrlCreateEdit("", 22, 150, 494, 20, BitOR($ES_CENTER,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetFont(-1, 8, 800, 0, "Arial")
GUICtrlSetData(-1, "Version de SauveMoi pour Microsoft Windows XP uniquement !")
GUICtrlSetColor(-1, 0xFF0000)
; Création des CheckBox cochés de l'onglet XP
$chk_xp_doc_bak = GUICtrlCreateCheckbox("Mes Documents", 72, 192, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_xp_ff_bak = GUICtrlCreateCheckbox("Profil Firefox", 72, 214, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_xp_tb_bak = GUICtrlCreateCheckbox("Profil Thunderbird", 72, 236, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_xp_oe_m_bak = GUICtrlCreateCheckbox("Email (OE)", 318, 192, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_xp_oe_adr_bak = GUICtrlCreateCheckbox("Carnet adresse (OE)", 318, 214, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_xp_fav_bak = GUICtrlCreateCheckbox("Favoris", 318, 236, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_xp_net_bak = GUICtrlCreateCheckbox("Profil reseau", 72, 258, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
;Bouton sauvegarder XP
$bt_xp_bak = GUICtrlCreateButton("Sauvegarder", 82, 297, 152, 33)
;Bouton restaurer XP
$bt_xp_res = GUICtrlCreateButton("Restaurer", 290, 297, 152, 33)
;Fin de la Tab onglet XP
;Tab onglet Vista
;**************
GUICtrlCreateTabItem("Vista")
GUICtrlCreateEdit("", 22, 150, 494, 20, BitOR($ES_CENTER,$ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN))
GUICtrlSetFont(-1, 8, 800, 0, "Arial")
GUICtrlSetData(-1, "Version de SauveMoi pour Microsoft Windows Vista uniquement !")
GUICtrlSetColor(-1, 0xFF0000)
; Création des CheckBox cochés de l'onglet Vista
$chk_vista_doc_bak = GUICtrlCreateCheckbox("Mes Documents", 72, 192, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_vista_ff_bak = GUICtrlCreateCheckbox("Profil Firefox", 72, 214, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_vista_tb_bak = GUICtrlCreateCheckbox("Profil Thunderbird", 72, 236, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_vista_oe_m_bak = GUICtrlCreateCheckbox("Email (OE)", 318, 192, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_vista_oe_adr_bak = GUICtrlCreateCheckbox("Carnet adresse (OE)", 318, 214, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_vista_fav_bak = GUICtrlCreateCheckbox("Favoris", 318, 236, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
$chk_vista_net_bak = GUICtrlCreateCheckbox("Profil reseau", 72, 258, 145, 17)
GUICtrlSetState(-1, $GUI_CHECKED)
;Bouton sauvegarder Vista
$bt_vista_bak = GUICtrlCreateButton("Sauvegarder", 82, 297, 152, 33)
;Bouton restaurer Vista
$bt_vista_res = GUICtrlCreateButton("Restaurer", 290, 297, 152, 33)
;Fin de la Tab onglet Vista
;Info sur le programme
;*******************
$Info = GUICtrlCreateTabItem("Info")
$Info_texte = GUICtrlCreateEdit("", 22, 150, 494, 180, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$ES_READONLY))
GUICtrlSetFont(-1, 8, 800, 0, "Arial")
GUICtrlSetData(-1, StringFormat("SauveMoi permet de sauvegarder puis restaurer (XP ou Vista).\r\nDossier Mes Documents\r\nFavoris Internet Explorer\r\nContacts Outlook Express\r\nDossiers de Email de Outlook Express\r\nProfil de Mozilla Firefox (bookmark, mot de passe...)\r\nProfil de Mozilla Thunderbird (email, parametre des comptes email sauf mdp)\r\nParametre reseau..."))
;Info sur la version actuel
;**********************
$Version = GUICtrlCreateTabItem("Version")
$Version_texte = GUICtrlCreateEdit("", 22, 150, 494, 100, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$ES_READONLY))
GUICtrlSetFont(-1, 8, 800, 0, "Arial")
GUICtrlSetData(-1, StringFormat("Créateur: Sokarz\r\nEmail: cyberyeye@gmail.com\r\nLicense: Freeware\r\nBuild: 0.1"))
; On affiche le tout (fenêtre, CheckBox, onglet et bouton).
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
; Action sur le bouton sauvegarder XP
;*******************************
Case $bt_xp_bak
; Dim $Res ; Déclaration d'une variable locale :
; Contrôle de l'état de chaque ChekBox, et si coché on lance la fonction _CopieFichiers avec les dossiers spécifiés.
; Checkbox Mes Documents
If _IsChecked($chk_xp_doc_bak) Then
If FileExists(@WorkingDir & "\XP" & "\Mes documents") Then
MsgBox(64, "Erreur", "Une précèdente sauvegarde 'Mes Documents' existe deja !" & @CRLF & "Veuillez supprimer l'ancienne sauvegarde avant d'en créer une nouvelle !")
Else
If not FileExists(@WorkingDir & "\XP" & "\Mes documents") Then
_CopieDossiers(@MyDocumentsDir,@WorkingDir & "\XP" & "\Mes documents")
EndIf
EndIf
EndIf
; Checkbox Profil Firefox
If _IsChecked($chk_xp_ff_bak) Then
If FileExists(@WorkingDir & "\XP" & "\Firefox") Then
MsgBox(64, "Erreur", "Une précèdente sauvegarde de 'Firefox' existe deja !" & @CRLF & "Veuillez supprimer l'ancienne sauvegarde avant d'en créer une nouvelle !")
Else
If not FileExists(@WorkingDir & "\XP" & "\Firefox") Then
_CopieDossiers(@UserProfileDir & "\Application Data\Mozilla\Firefox\Profiles",@WorkingDir & "\XP" & "\Firefox")
Sleep(1000)
EndIf
EndIf
EndIf
; Checkbox Profil Thunderbird
If _IsChecked($chk_xp_tb_bak) Then
If FileExists(@WorkingDir & "\XP" & "\Thunderbird") Then
MsgBox(64, "Erreur", "Une précèdente sauvegarde de 'Thunderbird' existe deja !" & @CRLF & "Veuillez supprimer l'ancienne sauvegarde avant d'en créer une nouvelle !")
Else
If not FileExists(@WorkingDir & "\XP" & "\Thunderbird") Then
_CopieDossiers(@UserProfileDir & "\Application Data\Thunderbird",@WorkingDir & "\XP" & "\Thunderbird")
Sleep(1000)
FileDelete(@WorkingDir & "\XP" & "\Thunderbird\registry.dat")
EndIf
EndIf
EndIf
; Checkbox Email (OE)
If _IsChecked($chk_xp_oe_m_bak) Then
If FileExists(@WorkingDir & "\XP" & "\Outlook\Identities") Then
MsgBox(64, "Erreur", "Une précèdente sauvegarde des Email de 'Outlook Express' existe deja !" & @CRLF & "Veuillez supprimer l'ancienne sauvegarde avant d'en créer une nouvelle !")
Else
If not FileExists(@WorkingDir & "\XP" & "\Outlook\Identities") Then
_CopieDossiers(@UserProfileDir & "\Local Settings\Application Data\Identities",@WorkingDir & "\XP" & "\Outlook\Identities")
Sleep(1000)
EndIf
EndIf
EndIf
; Checkbox Carnet adresse (OE)
If _IsChecked($chk_xp_oe_adr_bak) Then
If FileExists(@WorkingDir & "\XP" & "\Outlook\Carnet") Then
MsgBox(64, "Erreur", "Une précèdente sauvegarde du Carnet d'Adresse de 'Outlook Express' existe deja !" & @CRLF & "Veuillez supprimer l'ancienne sauvegarde avant d'en créer une nouvelle !")
Else
If not FileExists(@WorkingDir & "\XP" & "\Outlook\Carnet") Then
_CopieDossiers(@UserProfileDir & "\Application Data\Microsoft\Address Book",@WorkingDir & "\XP" & "\Outlook\Carnet")
FileDelete(@WorkingDir & "\XP" & "\Outlook\Carnet\*.wab~")
Sleep(1000)
EndIf
EndIf
EndIf
; Checkbox Favoris
If _IsChecked($chk_xp_fav_bak) Then
If FileExists(@WorkingDir & "\XP" & "\Favoris") Then
MsgBox(64, "Erreur", "Une précèdente sauvegarde des 'Favoris' existe deja !" & @CRLF & "Veuillez supprimer l'ancienne sauvegarde avant d'en créer une nouvelle !")
Else
If not FileExists(@WorkingDir & "\XP" & "\Favoris") Then
_CopieDossiers(@UserProfileDir & "\Favoris",@WorkingDir & "\XP" & "\Favoris")
Sleep(1000)
EndIf
EndIf
EndIf
; Checkbox Info Profil utilisateur et reseau
If _IsChecked($chk_xp_net_bak) Then
If FileExists(@WorkingDir & "\XP" & "\Profil utilisateur") Then
MsgBox(64, "Erreur", "Une précèdente sauvegarde des 'Profil utilisateur et reseau' existe deja !" & @CRLF & "Veuillez supprimer l'ancienne sauvegarde avant d'en créer une nouvelle !" & @CRLF & "Supprimer le dossier XP\Profil utilisateur")
Else
If not FileExists(@WorkingDir & "\XP" & "\Profil utilisateur") Then
; Creation du Dossier XP si non existant
If not FileExists(@WorkingDir & "\XP" & "\Profil utilisateur") Then
DirCreate(@WorkingDir & "\XP" & "\Profil utilisateur")
;Sauvegarde des mot de passe (email, msn, reseau)
RunWait(@WorkingDir & "\tools\Dp.exe /allusers /stext pwdnet.txt",@WorkingDir,@SW_HIDE)
RunWait(@WorkingDir & "\tools\Wk.exe /stext wifi.txt",@WorkingDir,@SW_HIDE)
RunWait(@WorkingDir & "\tools\Pk.exe /stext cle.txt",@WorkingDir,@SW_HIDE)
RunWait(@WorkingDir & "\tools\mail.exe /stext mail.txt",@WorkingDir,@SW_HIDE)
RunWait(@WorkingDir & "\tools\msn.exe /stext msn.txt",@WorkingDir,@SW_HIDE)
;Sauvegarde de la configuration reseau via ligne de commande
RunWait(@ComSpec & " /c " & "netsh -c interface dump > backlan.txt",@WorkingDir,@SW_HIDE)
RunWait(@ComSpec & " /c " & "ipconfig /all >> sauve_xp.txt",@WorkingDir,@SW_HIDE)
;Copie des fichiers texte dans le dossiers de sauvegarde
FileMove(@WorkingDir & "\*.txt", @WorkingDir & "\XP" & "\Profil utilisateur", 9)
Sleep(1000)
EndIf
EndIf
EndIf
EndIf
; Message si tout s'est bien dérouler
MsgBox(64, "Sauvegarde terminé", "Tous les dossiers séléctionner ont été sauvegarder.") ; Action terminée
; Action sur le bouton sauvegarder Vista
;**************************************************
Case $bt_vista_bak
; Dim $Res ; Déclaration d'une variable locale :
; Contrôle de l'état de chaque ChekBox, et si coché on lance la fonction _CopieFichiers avec les dossiers spécifiés.
; Checkbox Mes Documents
If _IsChecked($chk_vista_doc_bak) Then MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.")
; Checkbox Profil Firefox
If _IsChecked($chk_vista_ff_bak) Then MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.")
; Checkbox Profil Thunderbird
If _IsChecked($chk_vista_tb_bak) Then MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.")
; Checkbox Email (OE)
If _IsChecked($chk_vista_oe_m_bak) Then MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.")
; Checkbox Carnet adresse (OE)
If _IsChecked($chk_vista_oe_adr_bak) Then MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.")
; Checkbox Favoris
If _IsChecked($chk_vista_fav_bak) Then MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.")
; Checkbox Info Profil utilisateur et reseau
If _IsChecked($chk_vista_net_bak) Then MsgBox(64, "Avertissement", "Cette fonction n'est pas encore disponbile dans cette version.")
; Message si tout s'est bien dérouler
;MsgBox(64, "Sauvegarde terminé", "Tous les dossiers séléctionner ont été sauvegarder.") ; Action terminée
EndSwitch
$msg = TrayGetMsg() ; Action sur le bouton Quitter du systray
Select
Case $msg = 0
ContinueLoop
Case $msg = $Systray
ExitLoop
EndSelect
WEnd
; Fonction de copie des dossiers. Les variables $Src et $Dst représentent la source et la destination
; passées en argument à la fonction.
Func _CopieDossiers($Src, $Dst)
; Si le fichier source existe alors ...
If FileExists($Src) Then
; On contrôle que la copie de $Src vers $Dst c'est bien déroulée.
If Not DirCopy($Src, $Dst, 1) Then
; Si il y a eu des erreurs alors message.
MsgBox(16,"Erreur", "Erreur lors de la copie du dossier :" & @CRLF & $Src)
EndIf
Else
; Si la source n'existe pas alors ...
MsgBox(16,"Erreur", "Dossier source inexistant, sauvegarde impossible:" & @CRLF & $Src)
EndIf
EndFunc
; Fonction pour contrôler l'état d'un contrôle (Une CheckBox par exemple).
Func _IsChecked($control)
Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_IsChecked