Après pas mal de temps d'attente, voici un petit tuto sur l'utilisation des actions de SZ 2014 (désolé mais chez moi SZ 2014 fonctionne mieux que SZ 2012 ......)
Je ne suis pas très "doué" en tuto donc...... les avis/critiques sont les bienvenues
Ce tuto explique le fonctionnement du projet réalisé en démo sur la création d'une extension et de son association de fichier (projet SZ 2014 en fin de page).
/!\ ATTENTION /!\
La manipulation de la base de registre n'est pas SANS risque.
Une erreur peut rendre votre PC complètement instable/inutilisable.
Vous êtes seuls responsables de vos actes.
Je décline toute responsabilité en cas de dommage sur votre PC.
INFO :
- Manipulation et projet réalisé PAR et POUR SZ 2014.
- Les codes VB présentés ici est issue de la génération par SZ 2014.
- Les actions dédiées au registre se trouve dans le boîte à outils de l'éditeur de fonction ici :
C'est parti, à vos claviers....
PARTIE 1: Manipulation des clé registre
Pour associer une extension à son soft, il faut 4 petit bout de code :
A) Ajout de l'extension dans le registre:
( j'en parle en premier car c'est l'ordre logique mais étant illogique je ne l'utilise qu'en dernier ... voir plus bas.)
Avec :
- ExtName = le NOM (SANS le point car il est ajouté avant dans l'action pour simplifier la manipe) de l'extension voulu ici : extension
- RegDosName = le nom du "dossier" appelée clé par la suite pour l'association de fichier ici : dossier
A.1) En code VB généré par SZ 2014:
- Code:
_computer.Registry.SetValue("HKEY_CLASSES_ROOT\." & ExtName & "", "", "" & RegDosName & "")
A.2) Mais bien entendu, c'est totalement réalisable SANS coder (du mois cette partie):
Regardez bien, le point se trouve au tout début avant le nom de la clé.
A.3) Au final, voici ce que ça donne dans le registre :
B) Création de la clé de "paramétrage" de cette extension:
Avec :
- RegDosName = le nom de la clé pour l'association de fichier ici : dossier
- ExtRegDesc = La description de votre extension ici : description
B.1) En code VB généré par SZ 2014:
- Code:
_computer.Registry.SetValue("HKEY_CLASSES_ROOT\" & RegDosName & "", "", "" & ExtRegDesc & "")
Voilà, la clé principale est crée, reste plus "que" les sous clés.
C) Association d'une icône à son extension:
Avec :
- RegDosName = idem que plus haut
- DefaultIcon = clé pour l'association de l'inône, ce nom est IMPOSE par Windows.
- MyAppName sera le chemin d'accès à votre soft pour utiliser son icône; mais peut pointer vers une icône spéciale (non testé).
C.1) En code VB généré par SZ 2014:
- Code:
_computer.Registry.SetValue("HKEY_CLASSES_ROOT\" & RegDosName & "\DefaultIcon", "", "" & MyAppName & "")
Pas de panique, tous le texte contenus dans les champs sont complètement visible.
Là commence la "vraie" association de fichier.
D) Association de sont soft à son extension:
Avec :
- RegDosName = idem
- \shell\open\command = sous clés non modifiables, imposées par Windows
- MyAppName = idem que plus haut si vous utilisez l'icône de votre soft (même chemin quoi ) mais cette fois ci, c'est forcément le chemin vers le soft qui pas lire le fichier.
- %1 = pour retourner en argument de démarrage à votre soft le chemin d'accès au fichier qui porte votre extension. Très très utile mais sera vu par la suite
D.1) En code VB généré par SZ 2014:
- Code:
_computer.Registry.SetValue("HKEY_CLASSES_ROOT\" & RegDosName & "\shell\open\command", "", "" & MyAppName & " %1")
D.3) Au final, dans le registre, ça donne ça:
PARTIE 2: La gestion des arguments de démarrage
A) Lecture des arguments de démarrage:
Avec :
- ReadStartArgs = variable TABLEAU qui contiendra la liste des arguments de démarrages.
A.1) En code VB généré par SZ 2014:
- Code:
ReadStartArgs = New System.Collections.Generic.List(Of System.Object)(System.Environment.GetCommandLineArgs())
B) Traitement des arguments de démarrage avec le méthode boucle:
Avec :
- ReadStartArgs = idem que ci-dessus
- X_ReadStartArgs = sera utilisé UNIQUEMENT pour la boucle for (pour).
B.1) En code VB généré par SZ 2014:
- Code:
X_ReadStartArgs = 0
Do While (X_ReadStartArgs < ReadStartArgs.Count)
System.Windows.Forms.MessageBox.Show("Application démarrée depuis :" & System.Environment.NewLine & "" & ReadStartArgs(X_ReadStartArgs) & "", "Fenêtre_vierge1", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.None)
X_ReadStartArgs = (X_ReadStartArgs + 1)
Loop
Oui, vu de cette façon, mais :
B.2.1) Sous SZ, ça donne ça:
Utilisation de la boucle pour (for; bon OK, SZ n'utilisa pas un vrai FOR mais c'est une question d'optimisation si je ne me trompe pas.... Voir le blog sur le site d'Etienne).
B.2.2) Sous SZ, ça donne ça:
Récupération (et visualisation pour le test) argument par argument.
Comme ReadStartArg est un tableau de valeur, il faut lire élément par élément son contenu.
Cette lecture se fait "automatiquement" dans la boucle.
La boucle ne fait "que" d'incrémenter (action de faire +1) un nombre mémorisé dans X_ReadStartArg, cette variable part de 0 car,
dans la plupart des cas, la valeur 0 est une valeur comme les autre et elle contient donc le premier argument de démarrage
qui est le chemin d'accès au soft lui-même. ICI, le second (donc valeur 1 pour ReadStartArg) est le chemin d'accès vers le fichier qui a "demandé"
l'ouverture du soft; ainsi il est (plus) facile de lire son contenu.
C) Traitement des arguments de démarrage avec le méthode arguments ciblés:
Attention, la partie A reste identique. Il faut choisir entre partie B ou C. Je conseil cette partie pour un utilisation dans un soft
Avec :
- ReadStartArgs = idem que ci-dessus
- NbxdStartArgs = recevra le nombre d'arguments de démarrage (il y en aura forcément 1, l'argument 0)
C.1) On récupère le nombre d'arguments de démarrage:
-Utilisez l'action "Obtenir le nombre de valeur d'une variable tableau" dans la catégorie "Variables tableau" dans la boîte à outils de l'éditeur de fonction.
--Sélectionnez la variable tableau qui contient la liste des arguments de démarrage,
--Sélectionnez la variable qui recevra le nombre de valeurs.
Ensuite, il faut créer une condition (avec le sinon) pour dire quoi faire en fonction de tel ou tel nombre:
-Utiliser l'action "Si...Alors...Sinon" dans la catégorie "Général" dans la boîte à outils de l'éditeur de fonction.
--La variable à comparer et la variable qui contient le nombre d'arguments de démarrage, ici NbxStartArgs.
--Le comparateur est >. Si il y a PLUS d'UN argument de démarrage, alors, suivant notre méthode, c'est forcément une ouverture depuis un fichier; sinon, c'est une ouverture via le soft lui-même.
Pour finir, si on est bien dans le cas d'une ouverture par un fichier, on lis l'argument 2 soit la valeur d'index 1 (car on part de l'argument 1 avec la valeur de l'index 0).
DANS la condition, si on est >1 :
---Ici, je met un message avec en valeur :
Une fois qui vous avez mis 1 dans la zone de saisie (ici encadrée en rouge), appuyez sur la touche entrée.
C.2) Le contenu de l'évènement Load:
Une fois fait, voici ce que contient l'évènement Load en utilisant la méthode "arguments ciblés":
Dans l'image ci-dessus, le message de gauche est détaillé dans la partie C.1......
PARTIE 3: Fonction contre les sur-écritures de l'extension dans le registre
A venir..... Création d'une fonction permettant de vérifier si l'extension est déjà crée dans le registre ou non.
ATTENTION, la fonction est bien réalisée en utilisant les actions SZ MAIS le contenu même sera en VB.NET.
Projet démo pour SZ 2014 :
http://lereparateurdepc.olympe.in/sz_tmp/FOFO_GET_SET_EXT_REG_ASSOS_FILE_SZ2014.zip
Droits : Ce tuto est protégé par les droits d'auteurs et son utilisation est strictement réservée au forum/site VelerSoftware. Toute redistribution interdite.
Tuto réalisé par lereparateurdepc.
Images réalisées par lereparateurdepc extraites de SZ 2014 et de la base de registre de Windows 7, tous droits réservés.
Merci à Etienne Baudoux pour ce magnifique logiciel qui est SoftwareZator.
Merci à vous de commenter ce tuto
Merci à tous ceux qui participe à l'évolution de ce forum
Merci à JEREMY60800 de m'avoir rappelé de réaliser ce tuto et désolé du temps d'attente
Cordialement,
Le réparateur de PC
Dernière édition par lereparateurdepc le Sam 20 Sep 2014 - 6:58, édité 5 fois