- Ajout d'une action dans le menu contextuel [Explorer] - Programmation
Marsh Posté le 19-02-2001 à 16:12:40
Allez, un p'tit effort, ça se lit comme un rien ...
Marsh Posté le 19-02-2001 à 16:20:09
Pour faire communiquer 2 applications, tu as les messages. Tu peux enregistrer un nouveau message au moment où tu crée ta fenêtre. Les autres instances qui vont vouloir enregistrer ce message vont se voir répondre qu'il existe déjà. Chacune des non-première instance n'a plus qu'à broadcaster ledit message avec comme paramètre le nom du fichier qui lui était passé en argument.
Ceci est une base d'idée.
Marsh Posté le 19-02-2001 à 18:11:25
Euh un message c'est pas comme un sémaphore, c'est pas un truc qu'on peut créer qu'une fois avec un nom donné ! (non ??)
J'y ai déjà pensé, mais je croyais qu'on ne pouvait passer que des entiers comme paramètres des messages Windows ?
A moins que j'aie rien pigé ...
Marsh Posté le 19-02-2001 à 08:33:56
Un p'tit problème vachement intéressant :
Tout le monde sait comment associer une nouvelle action à un type de fichier, dans le menu contextuel de l'explorateur de Windows : par exemple, pour les fichiers .TXT, dans la base de registres, on a la clé HKEY_CLASSES_ROOT\txtfile\shell\ qui contient des sous-clés pour chaque action, avec comme valeur chaîne par défaut la commande à exécuter. Par exemple pour les fichiers texte, on a la commande open suivante : "NOTEPAD.EXE %1", avec %1 le nom du fichier sur lequel on a cliqué (ou %L pour gérer les noms longs, soit dit en passant). Bon, jusque là pas de problème : on peut associer une commande à un type de fichier, qui sera utilisé par un programme à nous, par exemple "C:\My Docs\MyProg.exe %L".
MAIS maintenant, le problème est le suivant : quand on sélectionne PLUSIEURS fichiers de même type et qu'on choisit notre commande custom, notre programme est lancé autant de fois de suite, avec à chaque fois un des fichiers en paramètre ... c'est le cas pour notepad, qui ne peut ouvrir qu'un seul fichier à la fois. Ce n'est pas le cas pour Winamp, qui peut charger plusieurs MP3 d'un coup dans sa playlist.
Je sais déjà comment éviter d'avoir plusieurs instances d'un même prog. lancées en même temps, donc le problème est : comment faire pour que tous les fichiers en paramètre soient passés à la même instance du programme ???
Comment une instance d'un prog. peut-elle passer une info de type texte (le nom du fichier) à une autre instance de ce même prog. ??
Ou bien, solution encore plus rapide, peut-être y a-t-il un mot-clé à mettre dans la description de la commande dans la base de registres, un truc qui remplacerait le %1, et qui représenterait les noms de tous les fichiers d'un seul coup ...
Voila, si vous êtes arrivé jusqu'ici vous pouvez rentrer chez vous ...
---------------
"D'abord arrêter le chimique, et après reprendre l'école ..."