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 ?