Bonjour, Je vous propose un nouvel élément à utiliser :
Action groupée sur une sélection de fichier

L'ajout de clef dans l'éditeur de base de registre de windows
permet de rajouter une entrée au menu contextuel
pour cela il faut rajouter (si elle n'existe pas ) la clef shell:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
HKEY_CLASSES_ROOT\AllFilesystemObjects\shell
une clef pour définir le message associé a la commande

Code : Sélectionner tout - Visualiser dans une fenêtre à part
HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ChaineCommande
avec pour valeur par défaut le texte a afficher dans le menu contextuel ici :

"Ajoute fichier liste commande"
et sous cette clef une autre nommé command et dont la valeur par défaut reprend le nom de l'exécutable a associer au menu contextuel ( %1) permettant de passer en paramètre a cet exécutable le nom du fichier sélectionné :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
    [HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ChaineCommande\command]
 
@="D:\\Dvp\\PrjChaineCommande\\prjChaineCommande.exe %1"
Le fichier .reg complet (qui peu être utilisé pour importer les modification devient :




Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell]
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ChaineCommande]
@="Ajoute fichier liste commande"
[HKEY_CLASSES_ROOT\AllFilesystemObjects\shell\ChaineCommande\command]
@="D:\\Dvp\\PrjChaineCommande\\prjChaineCommande.exe %1"
cependant lors de l'exécution de la commande si plusieurs fichiers sont sélection l'exécutable est appelé autant de fois qu'il y as de fichier avec a chaque appel en paramètre le nom d'un des fichiers.
pour regrouper les traitements a appliquer au fichier, je vous propose le principe suivant :
Lors du premier appel, le programme se met en position pour traiter une liste de fichier ..
Lors des appels suivant c'est à dire lorsqu'une instance est déjà en route .. la nouvelle instance du programme envoi un message à la première instance déjà en marche avec le nouveau nom de fichier a traiter et se ferme ... ensuite la première instance n'as qu'as prendre le relais pour traiter effectuer le traitement du fichier.

Le programme utilise la propriété :
pour savoir si une instance est déjà en route ou pas ...
ensuite pour communiquer avec l'instance déjà en route une communication et établi entre les programmes grâce au composant DiConverse6 disponible ici :
[VB6]Echange de textes entre 2 applications:

Sélection de la commande dans le menu contextuel :




Qu'en pensez-vous ?