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;Post d' origine : http://www.developpez.net/forums/vie...sion+shell+com
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 ?
Partager