AutoIt – Déplacer les Documents de l’utilisateur (partie 2)

Bienvenue dans cette seconde partie du développement d’un script sous AutoIt visant à automatiser le déplacement des documents de l’utilisateur sous Windows 7 de son emplacement d’origine vers une seconde partition du disque dur. Retrouvez ici la partie 1 et j’en profite pour remercier les nombreuses personnes qui m’ont lu et contacté pour me poser des questions et récupérer l’ensemble du script que je vais vous présenter ici dans cette seconde partie.

Nous allons voir comment élaborer une interface graphique ou GUI pour Graphical User Interface, permettant de sélectionner les éléments à déplacer (Ma Musique, Mes Vidéos, Mes Images…).

Cette interface graphique va se composer d’une fenêtre dans laquelle seront positionnés plusieurs éléments graphiques ou contrôles tels que des CheckBox (cases à cocher), Button (boutons), InputBox (champs de saisie), RadioBox (boutons radio), Label (textes simples), Sample Combo (Menu déroulant)…

Voilà à quoi ressemblera cette interface graphique une fois ce tutoriel terminé :

AutoIt Deplacer les Documents partie 2

Commençons par créer la fenêtre avec la commande GUICreate :

Global $GUI = GUICreate(« OSS Transfert », 262, 216, 192, 124)

Notre fenêtre s’intitule OSS Transfert et fait 262 pixels de hauteur et 216 de largeur. Elle est positionnée à 192 pixels de la gauche du bureau et à 124 pixels du haut du bureau.

Continuons en créant un cadre dans notre fenêtre pour grouper les différents éléments avec la commande GUICtrlCreateGroup :

Global $GroupeChoix = GUICtrlCreateGroup(« Sélection », 8, 8, 241, 193)

Notre cadre s’intitule Sélection il est positionné à 8 pixels de la gauche de la fenêtre et à 8 pixels du haut de la fenêtre. Il fait 241 pixels de large et 193 pixels de hauteur (attention précédemment la largeur et la hauteur étaient inversés et placés avant le positionnement)

Passons à la création des cases à cocher ou CheckBox. Ces cases sont les différents types de fichiers de l’utilisateur qu’on va sélectionner si nécessaire et déplacer :

Global $documents = GUICtrlCreateCheckbox(« Documents », 24, 32, 81, 17)
Global $images = GUICtrlCreateCheckbox(« Images », 24, 56, 81, 17)
Global $musiques = GUICtrlCreateCheckbox(« Musiques », 24, 80, 81, 17)
Global $videos = GUICtrlCreateCheckbox(« Videos », 24, 104, 81, 17)
Global $downloads = GUICtrlCreateCheckbox(« Downloads », 24, 128, 81, 17)
Global $desktop = GUICtrlCreateCheckbox(« Desktop », 24, 152, 81, 17)
Global $favoris = GUICtrlCreateCheckbox(« Favoris », 24, 176, 81, 17)

Inutile de détailler ici c’est comme précédemment avec (« Intitulé », position par rapport à la gauche, position par rapport au haut, largeur, hauteur).

Créons maintenant un bouton « Go ! » avec la commande GUICtrlCreateButton qui va déclencher l’exécution du script :

Global $finchoix = GUICtrlCreateButton(« Go ! », 160, 16, 81, 25, $WS_GROUP)

$WS_GROUP ici indique le premier contrôle d’un groupe de contrôles. Le groupe se compose de ce premier contrôle et tous les contrôles définis après, jusqu’à la prochaine commande avec WS_GROUP.

On fini toujours la création d’un groupe par la commande ci-dessous :

GUICtrlCreateGroup(«  », -99, -99, 1, 1)

On utilise la commande suivante pour afficher notre interface graphique ou GUI :

GUISetState(@SW_SHOW)

A ce stade vous allez afficher votre interface une fraction de seconde vous pouvez ajouter la commande Sleep(5000) pour l’observer 5 secondes de plus mais elle restera inutilisable tant que vous n’aurez pas utilisé une boucle infinie.

Le programme va exécuter une action en continu tant qu’un déclencheur ne la stoppera pas. Pour cela on va utiliser la commande While qui équivaut à la structure algorithmique « TANT QUE« . Ici on ajoutera 1 après While car 1 restera toujours 1 donc la boucle n’aura plus de déclencheur pour être stoppée et se répétera donc à l’infini :

While 1

La commande suivante va capturer les événements graphiques tels que vos clics :

$nMsg = GUIGetMsg()

Les commandes Switch et Case permettent de gérer plusieurs cas de figure. Ici on va donc gérer plusieurs actions en fonction des interactions déclenchées par les clics de la souris :

Switch $nMsg

Dans le cas ou on clic sur le bouton de fermeture de la fenêtre de notre GUI ($GUI_EVENT_CLOSE) alors le programme s’arrête avec Exit :

Case $GUI_EVENT_CLOSE
Exit

Si la fenêtre de la GUI n’est pas fermée alors la commande switch ou passe vers le cas suivant qui est $finchoix. Rappelez vous plus haut cette variable correspond au bouton « Go ! » qui déclenche les éléments des cases sélectionnés :

Case $finchoix

Si la case Documents est cochée alors le programme appel la fonction _Documents() :

If GUICtrlRead($documents)=$GUI_CHECKED Then
_Documents()
Sleep(500)
EndIf

Si la case Images est cochée alors le programme appel la fonction _Images() :

If GUICtrlRead($images)=$GUI_CHECKED Then
_Images()
Sleep(500)
EndIf

Si la case Musiques est cochée alors le programme appel la fonction _Musiques() :

If GUICtrlRead($musiques)=$GUI_CHECKED Then
_Musiques()
Sleep(500)
EndIf

Si la case Videos est cochée alors le programme appel la fonction _Videos() :

If GUICtrlRead($videos)=$GUI_CHECKED Then
_Videos()
Sleep(500)
EndIf

Si la case Downloads est cochée alors le programme appel la fonction _Downloads() :

If GUICtrlRead($downloads)=$GUI_CHECKED Then
_Downloads()
Sleep(500)
EndIf
If GUICtrlRead($desktop)=$GUI_CHECKED Then
_Desktop()
Sleep(500)
EndIf

Si la case Favoris est cochée alors le programme appel la fonction _Favoris() :

If GUICtrlRead($favoris)=$GUI_CHECKED Then
_Favoris()
Sleep(500)
EndIf

On ferme notre Switch :

EndSwitch

On ferme la boucle dans notre code même si elle demeure infinie :

WEnd

Voilà le reste du programme avec les fonctions qui sont appelées :

Func _Documents()
;Début du script pour « Transfert de Mes Documents »
TrayTip(« Transfert des fichiers de l’utilisateur », »Merci de ne plus toucher à la souris et au clavier ! »,1000)
;Pause de 3 secondes
Sleep(3000)
;Touche Windows et R permettant de lancer la boite de dialogue Exécuter
Send(« #r »)
;Le programme attend la présence de la fenêtre Windows intitulé « Exécuter »
WinWaitActive(« Exécuter »)
;Ouvre le dossier Documents situé sous l’emplacement du profil utilisateur actif
Send(« %USERPROFILE%\Documents\ »)
;Valide
Send(« {ENTER} »)
;Le programme attend la présence de la fenêtre Windows intitulé « Mes documents »
WinWaitActive(« Mes documents »)
;Touche retour permettant le retour au dossier Parent
Send(« {BACKSPACE} »)
;Le programme attend la présence de la fenêtre Windows dont la Class est « CabinetWClass »
WinWaitActive(« [CLASS:CabinetWClass] »)
;Pause de 1 seconde
Sleep(1000)
;Touche Application permettant d’afficher le menu contextuel de l’élément sélectionné
Send(« {APPSKEY} »)
;Touche Flèche haut pour remonter d’une ligne sur « Propriétés »
Send(« {UP} »)
;Valide
Send(« {ENTER} »)
;Le programme attend la présence de la fenêtre Windows dont la Class est « #32770 »
WinWaitActive(« [CLASS:#32770] »)
;Touche Ctrl maintenu puis 3 fois la touche TABULATION pour se déplacer d’onglet à onglet
Send(« ^{TAB 3} »)
;Renomme « C:\Users\%USERPROFILE%\Documents\ » en « D:\Documents »
Send(« D:\Documents »)
;Valide
Send(« {ENTER} »)
;Le programme attend la présence de la fenêtre Windows intitulé « Créer un dossier »
WinWaitActive(« Créer un dossier »)
;Valide
Send(« {ENTER} »)
;Le programme attend la présence de la fenêtre Windows intitulé « Déplacer le dossier »
WinWaitActive(« Déplacer le dossier »)
;Valide
Send(« {ENTER} »)
;Le programme attend que la fenêtre « Propriétés de : Favoris » se ferme
WinWaitClose(« Propriétés de : Mes documents », »D:\Documents »)
;Pause de 3 secondes
Sleep(3000)
;Affiche un message en bas à droite de l’écran informant que le Transfert est réussi
TrayTip(« Transfert des fichiers », »Transfert des Documents réussi ! »,1000)
;Pause de 3 secondes
Sleep(3000)
;Ferme la fenêtre Windows active
WinClose(« [ACTIVE] », «  »)
;Pause de 3 secondes
Sleep(3000)
EndFunc

Func _Images()
;Transfert de Mes Images
TrayTip(« Transfert des fichiers de l’utilisateur », »Merci de ne plus toucher à la souris et au clavier ! »,1000)
Sleep(3000)
Send(« #r »)
WinWaitActive(« Exécuter »)
Send(« %USERPROFILE%\Pictures\ »)
Send(« {ENTER} »)
WinWaitActive(« Mes images »)
Send(« {BACKSPACE} »)
WinWaitActive(« [CLASS:CabinetWClass] »)
Sleep(1000)
Send(« {APPSKEY} »)
Send(« {UP} »)
Send(« {ENTER} »)
WinWaitActive(« [CLASS:#32770] »)
Send(« ^{TAB 3} »)
Send(« D:\Pictures »)
Send(« {ENTER} »)
WinWaitActive(« Créer un dossier »)
Send(« {ENTER} »)
WinWaitActive(« Déplacer le dossier »)
Send(« {ENTER} »)
WinWaitClose(« Propriétés de : Mes images », »D:\Pictures »)
Sleep(3000)
TrayTip(« Transfert des fichiers », »Transfert des Images réussi ! »,1000)
Sleep(3000)
WinClose(« [ACTIVE] », «  »)
Sleep(3000)
EndFunc

Func _Musiques()
;Transfert de Ma Musique
TrayTip(« Transfert des fichiers de l’utilisateur », »Merci de ne plus toucher à la souris et au clavier ! »,1000)
Sleep(3000)
Send(« #r »)
WinWaitActive(« Exécuter »)
Send(« %USERPROFILE%\Music\ »)
Send(« {ENTER} »)
WinWaitActive(« Ma musique »)
Send(« {BACKSPACE} »)
WinWaitActive(« [CLASS:CabinetWClass] »)
Sleep(1000)
Send(« {APPSKEY} »)
Send(« {UP} »)
Send(« {ENTER} »)
WinWaitActive(« [CLASS:#32770] »)
Send(« ^{TAB 3} »)
Send(« D:\Music »)
Send(« {ENTER} »)
WinWaitActive(« Créer un dossier »)
Send(« {ENTER} »)
WinWaitActive(« Déplacer le dossier »)
Send(« {ENTER} »)
WinWaitClose(« Propriétés de : Ma musique », »D:\Music »)
Sleep(3000)
TrayTip(« Transfert des fichiers », »Transfert des Musiques réussi ! »,1000)
Sleep(3000)
WinClose(« [ACTIVE] », «  »)
Sleep(3000)
EndFunc

Func _Videos()
;Transfert de Mes Videos
TrayTip(« Transfert des fichiers de l’utilisateur », »Merci de ne plus toucher à la souris et au clavier ! »,1000)
Sleep(3000)
Send(« #r »)
WinWaitActive(« Exécuter »)
Send(« %USERPROFILE%\Videos\ »)
Send(« {ENTER} »)
WinWaitActive(« Mes vidéos »)
Send(« {BACKSPACE} »)
WinWaitActive(« [CLASS:CabinetWClass] »)
Sleep(1000)
Send(« {APPSKEY} »)
Send(« {UP} »)
Send(« {ENTER} »)
WinWaitActive(« [CLASS:#32770] »)
Send(« ^{TAB 3} »)
Send(« D:\Videos »)
Send(« {ENTER} »)
WinWaitActive(« Créer un dossier »)
Send(« {ENTER} »)
WinWaitActive(« Déplacer le dossier »)
Send(« {ENTER} »)
WinWaitClose(« Propriétés de : Mes vidéos », »D:\Videos »)
Sleep(3000)
TrayTip(« Transfert des fichiers », »Transfert des Videos réussi ! »,1000)
Sleep(3000)
WinClose(« [ACTIVE] », «  »)
Sleep(3000)
EndFunc

Func _Downloads()
;Transfert de Mes Téléchargements
TrayTip(« Transfert des fichiers de l’utilisateur », »Merci de ne plus toucher à la souris et au clavier ! »,1000)
Sleep(3000)
Send(« #r »)
WinWaitActive(« Exécuter »)
Send(« %USERPROFILE%\Downloads\ »)
Send(« {ENTER} »)
WinWaitActive(« Téléchargements »)
Send(« {BACKSPACE} »)
WinWaitActive(« [CLASS:CabinetWClass] »)
Sleep(1000)
Send(« {APPSKEY} »)
Send(« {UP} »)
Send(« {ENTER} »)
WinWaitActive(« [CLASS:#32770] »)
Send(« ^{TAB 3} »)
Send(« D:\Downloads »)
Send(« {ENTER} »)
WinWaitActive(« Créer un dossier »)
Send(« {ENTER} »)
WinWaitActive(« Déplacer le dossier »)
Send(« {ENTER} »)
WinWaitClose(« Propriétés de : Téléchargements », »D:\Downloads »)
Sleep(3000)
TrayTip(« Transfert des fichiers », »Transfert des Téléchargements réussi ! »,1000)
Sleep(3000)
WinClose(« [ACTIVE] », «  »)
Sleep(3000)
EndFunc

Func _Desktop()
;Transfert du Bureau
TrayTip(« Transfert des fichiers de l’utilisateur », »Merci de ne plus toucher à la souris et au clavier ! »,1000)
Sleep(3000)
Send(« #r »)
WinWaitActive(« Exécuter »)
Send(« %USERPROFILE% »)
Send(« {ENTER} »)
WinWaitActive(« [CLASS:CabinetWClass] »)
Sleep(1000)
Send(« {TAB 5} »)
Send(« {SPACE} »)
Send(« {APPSKEY} »)
Send(« {UP} »)
Send(« {ENTER} »)
WinWaitActive(« [CLASS:#32770] »)
Send(« ^{TAB 3} »)
Send(« D:\Desktop »)
Send(« {ENTER} »)
WinWaitActive(« Créer un dossier »)
Send(« {ENTER} »)
WinWaitActive(« Déplacer le dossier »)
Send(« {ENTER} »)
WinWaitClose(« Propriétés de : Bureau », »D:\Desktop »)
Sleep(3000)
TrayTip(« Transfert des fichiers », »Transfert du Bureau réussi ! »,1000)
Sleep(3000)
WinClose(« [ACTIVE] », «  »)
Sleep(3000)
EndFunc

Func _Favoris()
;Transfert des Favoris
TrayTip(« Transfert des fichiers de l’utilisateur », »Merci de ne plus toucher à la souris et au clavier ! »,1000)
Sleep(3000)
Send(« #r »)
WinWaitActive(« Exécuter »)
Send(« %USERPROFILE%\Favorites\ »)
Send(« {ENTER} »)
WinWaitActive(« Favoris »)
Send(« {BACKSPACE} »)
WinWaitActive(« [CLASS:CabinetWClass] »)
Sleep(1000)
Send(« {APPSKEY} »)
Send(« {UP} »)
Send(« {ENTER} »)
WinWaitActive(« [CLASS:#32770] »)
Send(« ^{TAB 3} »)
Send(« D:\Favorites »)
Send(« {ENTER} »)
WinWaitActive(« Créer un dossier »)
Send(« {ENTER} »)
WinWaitActive(« Déplacer le dossier »)
Send(« {ENTER} »)
WinWaitClose(« Propriétés de : Favoris », »D:\Favorites »)
Sleep(3000)
TrayTip(« Transfert des fichiers », »Transfert des Favoris réussi ! »,1000)
Sleep(3000)
WinClose(« [ACTIVE] », «  »)
Sleep(3000)
EndFunc

Cliquez ici pour télécharger le script ainsi que le fichier exécutable.

Ce tutoriel est terminé merci encore pour l’intérêt que vous portez à mon travail.

Tutoriel réalisé avec AutoIt version 3 et Windows 7 le 21 Janvier 2015