Ajouter une commande dans le menu contextuel
Bonjour à tous
Je cherche le moyen de rajouter une commande dans le menu contextuel qui s'affiche lorsque je clique-droite sur un fichier d'une extension donnée, en l'occurence .jpg ou .bmp.
La commande serait "Ajouter à la liste en cours". En cas de clic,j e voudrais ajouter le chemin du fichier cliqué dans une TListBox
Si l'application est fermée, alors elle s'ouvre et le chemin s'ajoute dans la listBox, ça je sais faire (j'ai essayé en faisant Ouvrir avec:
Code:
1 2
| if ( ParamCount() > 0 )
lstPP->Items->Add(ParamStr(1)); |
Merci la FAQ
Mais si mon appli est déja lancée, alors le fichier ne s'ajoute pas dans la listbox...
Savez vous comment dire à l'appli "Si tu es lancée et qu'on clique sur Ajouter à la liste en cours, alors ajoute le fichier cliqué à ta liste". Et comment ajouter cette fameuse commande "Ajouter à la liste en cours" dans le menu contextuel des fichiers .jpg et .bmp ?
:)
Registre de base de windows
Salut !
Pour ajouter une commande au menu contextuelle d'un type de fichier ou dossier(Je présume que t'es sous Windows 8) ),faudera modifier les registres de bases de windows !
:?: Je m'éxplique :
Pour ajouter une entrée dans le menu contextuel des fichier *.JPG il faudera cérer un clé "HKEY_CLASSES_ROOT/.jpg/shell/Ajouter à la liste en cours/command"
puis écrire dans la valeur par défaut le chemin complet de ton application
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
HKEY_CLASSES_ROOT
!
!
!__.jpg
!
!
!__shell
!
!
!___Ajouter à la liste en cours
!
!
!___command
!
(par défaut)="c:\ton_application.exe" |
côté programmation :!: :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
|
TRegistry *Reg = new TRegistry();
Reg->RootKey = HKEY_CLASSES_ROOT;
try{
Reg->OpenKey(".jpg\\shell\\Ajouter à la liste en cours \\command",true);/*le true pour dire si cette clé n'éxiste pas alors en créer une et l'ouvrir,sinon l'ouvrir la clé existante ! */
Reg->WriteString("","\""+Application->ExeName+"\"");/*écriture du chemin complet de ton application*/
Reg->CloseKey();
}
catch(...)
{
//Probleme <:(
}
delete Reg; |
heu,dernière chose,faut pas jouer avec les clé de registre :wink:
bonne chance !