[Ex] FileTypeInstaller (macro)
Posté : mar. 08 sept. 2009 18:01
par DJSIR
FileTypeInstaller
Kézako ?
FileTypeInstaller est un macro complet permettant d'installer un fichier avec une extension personnalisée par exemple.
Ce n'est pas que ça, il est expliqué lignes par lignes (on s'en fous
) et il comporte de nombreuses fonctions et messages d'erreurs...Script ?
► Afficher le texteScript
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.1.1
Author: DJSIR
Script Name : FileTypeInstaller (dérivé du fichier Association pour iSafari)
Notes :
Si vous veniez a modifier ce script, merci de laisser le nom de l'auteur.
Script Function:
Permet d'accocier les fichiers avec des extentions inconnues avec Windows avec un macro.
#ce ----------------------------------------------------------------------------
;Format du fichier à installer (sans le .)
$format = "isaf"
;Description affichée en dessous du nom du fichier
$description = "Informations de configuaration"
;Icône à compiler avec
$icone = "icons\isaf.ico"
;Nom de l'icône
$n_icone = "isaf.ico"
;Nom de l'action
$action = "Éditer"
;Programme à utiliser
$n_action = "notepad.exe"
;Nom de l'action 2 (vide pour rien)
$action_2 = ""
;Programme à utiliser 2 (vide pour rien)
$n_action_2 = ""
#Region > Script >
Opt("WinTitleMatchMode", 4);Obligé pour "écouter" les fenêtres
FileInstall($icone, @SystemDir & "\" & $n_icone);Installation de l'icône
$msgbox = MsgBox(4,"FileTypeInstaller", "Nous allons installer les fichiers de type *."&$format&" ?");Nouveau!
If GUICtrlRead($msgbox) = 7 Then Exit;Sinon, on quitte
Run("explorer.exe");Lancement de explorer.exe (pour pas brouiller l'utilisateur)
WinWaitActive("Mes");On attend le dossier "Mes Documents"
Sleep(5000);Souvent le dossier est long à se charger (chez moi) alors je fait une petite pause.
;A partir de maintenant, je vais décrire juste les touches envoyées (pas les faciles) et les pauses.
Send("!");Alt
Send("o");O (Outils)
Send("o");O (Options des dossiers)
WinWaitActive("Options des dossiers");On attend la nouvelle fenêtre
Sleep(1000);J'ai jamais eu de problème ici, mais je préfère prendre des précautions
Send("{TAB}");On va sur les onglets
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{RIGHT}");On change d'onglet
Send("{RIGHT}")
WinWaitActive("Options des dossiers", "Pour modifier les");Ici, on reste sur la même fenêtre mais on attend le texte de l'onglet (le chargement des fichiers).
Sleep(1000);On fait une petite pause
Send("!N");On envoie Alt+N (Nouvelle extention)
Send($format);On envoie le nom du format à créer
Send("{ENTER}");Puis on valide
If WinActive("L'extension est en cours d'utilisation") Then Send("{ENTER}");Si l'extention à déja été crée (dans le cas d'une mise à jour de fichiers) on l'écrase.
WinWaitActive("Options des dossiers", "Pour modifier les");On re-attend la fenêtre des dossiers
Send($format);On envoie le format à modifier
$msgbox = MsgBox(4,"FileTypeInstaller", "Est-ce que le type de fichiers séléctionné est bien ."&$format&" ?");Nouveau! On demande à l'utilisateur si le type de fichiers est bien séléctionné
If GUICtrlRead($msgbox) = 7 Then Exit;Sinon, on quitte
Sleep(1000)
Send("!V");On envoie Alt+V (Avancé)
WinWaitActive("Modification du type de fichier");On attend la fenêtre
Sleep(1000)
Send($description);On envoie la description
Sleep(1000)
Send("{TAB}")
Send("{ENTER}")
WinWaitActive("Changer d'i");On attend la fenêtre pour chaner l'icône
Send($n_icone);On envoie le nom de l'icône
If WinActive("Changer d'i", "Impossible de trouver le fichier") Then
MsgBox(4,"FileTypeInstaller", "L'icône n'est pas présent dans le dossier système." & @CRLF & "Méthode 1/2 : Le programme va ré-installer l'icône");Nouveau! Si l'icône est pas présent, on essaie plusieurs résolutions
Send("{SPACE}");On quitte le message
Send("{ESC}");On ferme la boite d'icône
;Pourquoi? Si on modifie l'icône directement, le chemin de la shell32.dll est remis.
WinWaitActive("Modification du type de fichier");On attend la fenêtre
Send("{SPACE}");On réouvre la boite d'icône
;Solution 1 : On ré-installe l'icône :
FileInstall($icone, @SystemDir & "\" & $n_icone);Installation de l'icône
WinWaitActive("Changer d'i");On attend la fenêtre pour chaner l'icône
Send($n_icone);On envoie le nom de l'icône
If WinActive("Changer d'i", "Impossible de trouver le fichier") Then
;Solution 2 : On copie le fichier sur le bureau et l'utilisateur le copie dans le @SystemDir.
FileInstall($icone, @DesktopDir & "\" & $n_icone);Installation de l'icône
MsgBox(4,"FileTypeInstaller", "L'icône n'est pas présent dans le dossier système." & @CRLF & "Méthode 2/2 : Veuillez copier le fichier " & $n_icone & " (présent sur votre bureau) vers le dossier :" & @CRLF & @SystemDir & @CRLF & 'Et appuyez sur "OK"');Nouveau! On demande a l'utilisateur de le copier manuellement.
Send("{SPACE}");On quitte le message
Send("{ESC}");On ferme la boite d'icône
;Pourquoi? Si on modifie l'icône directement, le chemin de la shell32.dll est remis.
WinWaitActive("Modification du type de fichier");On attend la fenêtre
Send("{SPACE}");On réouvre la boite d'icône
Send($n_icone);On envoie le nom de l'icône
WinWaitActive("Changer d'i");On attend la fenêtre pour chaner l'icône
If WinActive("Changer d'i", "Impossible de trouver le fichier") Then MsgBox(4,"FileTypeInstaller", "Le programme ne peux continuer à cause d'une erreur fatale." & @CRLF & "0x1000 ::: icône non présent");Nouveau! On aura essayé !
EndIf
EndIf
Send("{ENTER}")
Send("{ENTER}")
WinWaitActive("Modification du type de fichier");On ré-attend la fenêtre
Send("{TAB}")
Send("{TAB}")
Send("{ENTER}")
WinWaitActive("Nouvelle action");On définis que faire
Send($action)
Send("{TAB}")
Send($n_action)
Send("{ENTER}")
WinWaitActive("Modification du type de fichier")
If $action_2 = "" Then;Si une deuxième action est définie, on l'inscris
Else
Send("{SPACE}")
WinWaitActive("Nouvelle action");On définis que faire
Send($action_2)
Send("{TAB}")
Send($n_action_2)
Send("{ENTER}")
EndIf
;C'est fini!
Send("{TAB}");On quitte
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{TAB}")
Send("{ENTER}")
WinWaitActive("Options des dossiers", "Pour modifier les");On attend la fenêtre
Send("{ENTER}");On la quitte
Sleep(1000)
WinWaitActive("Mes");On attend le dossier "Mes Documents"
Send("!F4");On quitte le dossier Mes Documents
TrayTip("FileTypeInstaller", "Les fichiers *." & $format & " sont maintenant associés avec le système.", 5000)
Sleep(6000)
Exit
#Region > Script >