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

Windows Discussion :

Ajout d'un clic-droit dans l'Explorer : problème quand sélection multiple de fichiers


Sujet :

Windows

  1. #1
    Expert éminent
    Avatar de Webman
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 232
    Points : 8 154
    Points
    8 154
    Par défaut Ajout d'un clic-droit dans l'Explorer : problème quand sélection multiple de fichiers
    Bonjour,

    Méthode n°1 :
    Je suis en train de développer un petit utilitaire qui est lancé depuis l'explorer de Windows par un "clic-droit sur un fichier" -> "nom du programme dans le menu contextuel". Pour cela rien de bien complexe, j'ai ajouté une clé dans la base de registre :

    HKEY_CLASSES_ROOT\*\shell\monAppli\Command
    avec comme valeur :
    "C:\monappli.exe" "%1"

    Cela fonctionne très bien, le seul problème est que lorsque je sélectionne plusieurs fichiers en même temps, et que je fais un "clic-droit" -> "nom du programme dans le menu contextuel" une instance de mon programme est lancée pour chaque fichier. Ce que je voudrais faire c'est renvoyer la liste complete des chemin des fichiers vers la même instance, et non pas un fichier vers une nouvelle instance à chaque fois. Ma question est, est-ce que je peux gérer ça juste en modifiant la valeur de ma clé dans le registre ?

    Méthode n°2 :
    Autre problème/solution : une chose intéressante, est que j'ai simplement placé un raccourci vers mon programme dans le dossier SendTo, est là cela fonctionne très bien, dès que je sélectionne plusieurs fichiers, la liste des chemins de ces fichiers est bien envoyée à la même instance de mon programme... Donc j'ai bien ce que je veux : une seule instance de mon programme récupère la liste complète des fichiers sélectionnés.
    Mais il y a un problème... En effet, le "clic-droit" -> "nom du programme dans le menu contextuel" ne doit fonctionner que pour les fichiers, et non pour les dossiers. Chose que je peux gérer avec ma méthode n°1 lorsque j'ajoute une clé ici :
    HKEY_CLASSES_ROOT\*\shell\monAppli\Command
    puisque que le "*" correspond aux fichiers seulement. Par contre quand je place un simple raccourci vers mon programme dans le dossier SendTo, cela fonctionne pour les fichiers, mais aussi pour les dossiers.


    Donc, dans l'idéal, je voudrais savoir si je peux modifier facilement le registre ou autre, de manière à faire que le "clic-droit" -> "envoyers vers" -> "mon appli" ne fonctionne que pour les fichiers et non pour les dossiers.

    Ou sinon, en deuxième choix, comment modifier ma méthode n°1 pour que lorsque je sélectionne plusieurs fichiers à la fois, la liste des chemins de ces fichiers ne soit envoyée que une seule et même instance de mon programme.

    J'espère avoir été complet, n'hésitez pas à ma demander des détails complémentaires si nécessaire.

    Par avance merci pour toute information

    Cordialement,
    Webman
    Rédacteur .Net
    MVP C#
    Mes articles - CodeQuake (blog)
    Pas de question technique par MP, merci.

  2. #2
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Une solution serait d'utiliser l'interface IContexteMenu du shell.

    Un exemple ici : http://castelain.developpez.com/sources/shellextension/

    Je ne vois pas de méthodes sans programmation.
    L'itération est humaine; la récursion, divine.

  3. #3
    Membre éclairé
    Avatar de Interruption13h
    Inscrit en
    Août 2005
    Messages
    603
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 603
    Points : 786
    Points
    786
    Par défaut
    Salut !

    Pour les dossiers ,la clé de registre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    HKEY_CLASSES_ROOT\Folder\shell\monAppli\Command

    Bonne continuation
    Plus tu prends part aux joies et chagrins des gens, plus ils te sont proches et chers. Mais c'est le chagrin et les problèmes qui vous rapprochent le plus.

    (Mark TWAIN)

  4. #4
    Expert éminent
    Avatar de Webman
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 232
    Points : 8 154
    Points
    8 154
    Par défaut
    Merci Mayti4 pour le lien je vais regarder cela plus en détails.

    Interruption13h, merci pour la clé, mais justement là, je ne veux pas que cela soit dispo pour les dossiers, mais juste pour les répertoires... Mais merci quand même
    Rédacteur .Net
    MVP C#
    Mes articles - CodeQuake (blog)
    Pas de question technique par MP, merci.

Discussions similaires

  1. Ajouter une fonction aur le clic droit dans une zone de text
    Par medmans dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 23/02/2010, 14h13
  2. [C#] Clic Droit dans un DataGrid
    Par papouAlain dans le forum Windows Forms
    Réponses: 2
    Dernier message: 07/06/2006, 12h02
  3. [VB6]pb de clic droit dans un dbgrid
    Par riesseg dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 08/05/2006, 19h53
  4. Interdire le Clic Droit dans une appli sous windows XP
    Par new-gate dans le forum Windows
    Réponses: 10
    Dernier message: 03/11/2005, 23h37
  5. clic droit dans une DrawGrid
    Par underdog dans le forum C++Builder
    Réponses: 4
    Dernier message: 16/03/2005, 15h21

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