Récuperer dans un executable la liste d'une multi-selection de fichiers dans un [Résolu]

Signaler
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 mars 2006
-
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 mars 2006
-
hello,
j'ai developpé un soft de compilation en C++ mode console.
son fonctionnement est simple.
je place un raccourci vers mon fichier compil.exe dans le répertoire D:\Documents and Settings\...\SendTo
Ensuite, avec l'explorateur de windows, on se ballade et on sélectionne les fichiers a compiler (multi selection possible).
une fois la selection achevé, il ne reste plus qu'a faire un click droit, Send To, et compil.exe.
le soft récupere en argument du main (int _tmain(int argc, TCHAR* argv[], TCHAR* envp[])) la liste des fichiers cibles (qui est en fait passé en ligne de commande par windows) et je n'ai plus qu'a la traité dans le soft.

seul probleme: apparament, il y aurrait une limitation qui m'empeche de selectionner un nombre "infinis" de fichiers (la limite oscille autour d'une vingtaine de fichiers, ce qui me fait penser a une limitation dans la taille de la ligne de commande.)

apparament, il y a des soft qui ne sont pas impactés par cette limitation (winzip).
quelqu'un connaitrait un contournement possible de ce problème

grand merci d'avance.

A+

3 réponses

Messages postés
2070
Date d'inscription
mardi 22 avril 2003
Statut
Membre
Dernière intervention
3 juillet 2006
8
Winzip (en autre prog du genre) utilise une dll spéciale qui s'intègre à l'explorateur. Lorsque des fichiers ou répertoires sont sélectionnés, et que l'on fait un click droit, une entrée de menu est ajoutée pour permettre de réaliser une action avec les fichiers.
Ensuite des prog sont appelés avec en général non pas tous les noms en parametre mais plutot un nom de fichier temporaire qui contient les noms de fichier à traiter.

J'ai fait un exemple de dll s'intégrant au shell :
http://www.cppfrance.com/code.aspx?ID=23854

Les fct qui devraient t'interresser :
CTxtShExtMenu::Initialize -> récupère les noms
CTxtShExtMenu::InvokeCommand -> exécute l'action

Cela aborde des sujets assez compliqués mais donne une bonne base pour commencer
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 mars 2006

ok, merci. je vais jetter un oeil.
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
3 mars 2006

hello,
merci pour tes sources.
elles sont vraiment de grandes qualité et ca fonctionne a merveille.
ca réponds parfaitement a mon probleme.