IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment passer en paramètre les chemins de tous les fichiers séléctionnés


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 19
    Points : 42
    Points
    42
    Par défaut Comment passer en paramètre les chemins de tous les fichiers séléctionnés
    Bonjour à tous !

    J'ai créé un petit outil c# qui se lance à partir du menu contextuel qui s'ouvre lors d'un clic droit sur un fichier. L'outil marche bien si je sélectionne un fichier car je passe en paramètre à mon programme le chemin de celui-ci :

    Dans regedit à HKEY_CLASSES_ROOT/*/sheel/monOutil/command

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonChemin\MonOutil.exe "%1"
    "%1" permet de passer le chemin du fichier sélectionné en paramètre, j'y accède dans args[0] mon paramètre du main :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    static void Main(string[] args)
    Mon problème est le suivant si je sélectionne trois fichiers et que je lance ce même outil, alors l'outil se lancera trois fois avec le chemin des différents fichiers. Or je voudrais que mon outil ne se lance qu'une fois mais prenant comme paramètre les différents chemins(dans string[] args). Il y a surement une alternative au "%1" que j'utilise qui me permettrai de résoudre mon problème mais je ne trouve pas...

    Merci d'avance !

  2. #2
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Je ne pense pas que cela soit possible. Par contre tu peut detecter que le programme est déja lancé (au démarrage de ton appli, tu test si un process est déja lancé). Si elle existe déja tu peux lui envoyer un message. Par contre en C# je ne sais pas comment faire simplement.

    Je te suggere par exemple un thread qui surveille une zone (cela peut par exemple être un dossier dans le quel tu met des fichier texte qui contiennent le parametres, ou alors un pipe de communication) et a chaque fois que tu recois une info tu lance un evennement. Je pense qu'il existe déja en C# des objet qui te permettent de t'affranchir des pipe ou de surveillance de dossier mais je ne connais pas.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 19
    Points : 42
    Points
    42
    Par défaut
    Merci pour ta réponse, si ce que je voulais faire est impossible, ta solution est tout a fait judicieuse. Il ne me reste plus qu'a réussir à la mettre en œuvre

  4. #4
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Je regarde si je trouve quelque chose de simple et je te fais un retour si je trouve.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Si, j'ai bien compris ton problème.
    Maintenant, un truc important est a savoir, est ce que tout tes fichier sont lié ou indépendant (par exemple dans word, si on ouvre 15 fichiers, ils sont tous ouvert dans la même appli mais ne sont pas lié entre eux). Si effectivement tes fichiers doivent être liés entre eux alors la c'est plus compliqué.

    Edit: je vais essayer de te faire un petit exemple pour demain voir si cela peut t'aider.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2008
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 19
    Points : 42
    Points
    42
    Par défaut
    Disons que pour simplifier (euphémisme ) mon outil : il met dans le presse papier les noms des fichiers sélectionnés...
    Je n'ai pas bien compris l'idée de fichiers liés ou indépendants mais a priori ils sont indépendants.

  7. #7
    Membre régulier
    Inscrit en
    Juin 2006
    Messages
    244
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 244
    Points : 110
    Points
    110
    Par défaut
    Sinon, la solution que je t'ai donné peut convenir et je te conseille de regarder (pour faire un truc propre) du coté des Named Pipe et des Mutex (les pipes pour la communication interprocess et les mutex pour la sinchro inter process).
    Maintenant, je ne connais pas ton niveau en prog et ce genre de prox (mutex et pipe) n'est pas forcément évident.
    Voici un second lien qui pourrai te servir d'exemple ou d'idée:

    http://blog.paranoidferret.com/index...ipes-in-csharp

    (les lien pour télacharger la solution sont dans la pge web)

Discussions similaires

  1. lister tous les membres de tous les groupes AD
    Par fbb53 dans le forum VBScript
    Réponses: 1
    Dernier message: 03/10/2011, 11h24
  2. Le plus court chemin entre tous les chemins.
    Par NoIdea dans le forum Intelligence artificielle
    Réponses: 4
    Dernier message: 14/04/2011, 09h42
  3. Réponses: 2
    Dernier message: 25/08/2008, 14h11
  4. Réponses: 9
    Dernier message: 16/10/2006, 16h35
  5. Réponses: 1
    Dernier message: 19/08/2006, 10h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo