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

Résolu
CoyoteVsBeepBeep Messages postés 41 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 3 mars 2006 - 14 déc. 2005 à 17:06
CoyoteVsBeepBeep Messages postés 41 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 3 mars 2006 - 15 déc. 2005 à 15:59
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

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
15 déc. 2005 à 13:04
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
3
CoyoteVsBeepBeep Messages postés 41 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 3 mars 2006
15 déc. 2005 à 15:13
ok, merci. je vais jetter un oeil.
0
CoyoteVsBeepBeep Messages postés 41 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 3 mars 2006
15 déc. 2005 à 15:59
hello,
merci pour tes sources.
elles sont vraiment de grandes qualité et ca fonctionne a merveille.
ca réponds parfaitement a mon probleme.
0
Rejoignez-nous