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

API, COM et SDKs Delphi Discussion :

Context Menu - ( Code de P. Castelain )


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Points : 16
    Points
    16
    Par défaut Context Menu - ( Code de P. Castelain )
    Bsr à tous.

    Je cherche à ajouter un item au Context menu de Windows, mais je me heurte à quelques soucis. Je souhaiterais avoir un item quelque soit les types de fichiers selectionnés dans Windows. Pour ca, je dois obligatoirement passer par un objet COM.
    Le seul code compréhensible que j' ai pu trouvé sur le net est celui donné par l' un des intervenants de ce forum (merci à cette personne au passage). Mais, si je n' ai aucun problème pour le faire fonctionner et pour comprendre les grandes lignes... la procédure qui suit me laisse perplexe pour ce que je veux faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    procedure TShellExtTesterFactory.UpdateRegistry(Register: Boolean); 
    var 
      ClassID: string; 
      DocumentName: string; 
    begin 
      if Register then 
      begin 
        inherited UpdateRegistry(Register); 
     
        ClassID := GUIDToString(Class_ShellExtTester); 
     
        with TRegistry.Create do 
        try 
          RootKey:= HKEY_CLASSES_ROOT; 
          if OpenKey('.txt', false) then 
            DocumentName:= ReadString(''); 
        finally 
          Free; 
        end; 
     
        CreateRegKey(DocumentName+'\shellex', '', ''); 
        CreateRegKey(DocumentName+'\shellex\ContextMenuHandlers', '', ''); 
        CreateRegKey(DocumentName+'\shellex\ContextMenuHandlers\ShellExtTester', '', ClassID); 
     
        if (Win32Platform = VER_PLATFORM_WIN32_NT) then 
          with TRegistry.Create do 
            try 
              RootKey := HKEY_LOCAL_MACHINE; 
              OpenKey('SOFTWARE\Microsoft\Windows\CurrentVersion\Shell Extensions', True); 
              OpenKey('Approved', True); 
              WriteString(ClassID, 'ShellExtTester Context Menu Extension'); 
            finally 
              Free; 
            end; 
      end 
      else 
      begin 
        DeleteRegKey(DocumentName+'\shellex\ContextMenuHandlers\ShellExtTester'); 
        inherited UpdateRegistry(Register); 
      end; 
    end;


    Ce code fonctionne parfaitement pour les fichiers TEXTE évidemment. Mais pour tout type de fichier, comment dois-je procéder ?
    Je pourrais très certainement faire une boucle pour traiter X extensions différentes, mais cette méthode serait vraiment très "laide" et très lourde (je me trompe !?).
    Dois-je passer par une boucle, ou y aurait-il une astuce ?

  2. #2
    Membre expérimenté

    Inscrit en
    Mai 2002
    Messages
    720
    Détails du profil
    Informations forums :
    Inscription : Mai 2002
    Messages : 720
    Points : 1 594
    Points
    1 594
    Par défaut
    Pas besion de passer par COM !

    modifie la clé :
    HKEY_CLASSES_ROOT\*
    comme si c'était une clé '.txt' par exemple ! Ca mettra tes elements de menu sur tous les fichiers !!

    Exemple (Copié depuis mon registre) :
    Clé : HKEY_CLASSES_ROOT\*\Shell\HexEditor
    Valeur par défaut : "Edition hexadécimale"
    Clé : HKEY_CLASSES_ROOT\*\Shell\HexEditor\Command
    Valeur par défaut : ""C:\Program Files\Astase\AsmEditor\HexEditor.exe" "%1""
    Bon dev'

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Je me doutais bien qu' il y avait un truc. Il fallait juste le connaitre...
    un grand Merci Smortex !

    @++

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 04/10/2008, 16h49
  2. Context Menu dans CListBox (MFC)
    Par Drummkit dans le forum Windows
    Réponses: 1
    Dernier message: 04/09/2008, 17h37
  3. [VB.NET] Context Menu avec icones
    Par pierre.ricci dans le forum Windows Forms
    Réponses: 6
    Dernier message: 05/01/2006, 13h59
  4. [système] Comment ajouter un item dans le context menu de Windows ?
    Par ddmicrolog dans le forum API, COM et SDKs
    Réponses: 8
    Dernier message: 29/06/2005, 17h03
  5. Context menu Windows - icone pour un item
    Par Cameleon45 dans le forum Composants VCL
    Réponses: 7
    Dernier message: 07/03/2003, 13h48

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