Einzelnen Beitrag anzeigen

martinf16

Registriert seit: 26. Aug 2007
99 Beiträge
 
Turbo Delphi für Win32
 
#1

Registry: Explorer Kontextmenü zeigt sich nicht

  Alt 13. Apr 2010, 12:29
Hallo,

seit Tagen bin ich schon am probieren, einen Kontextmenü Eintrag im Explorer zu erzeugen, das alle Dateien mit meinem Programm verknüpft. Mein bisher bester Ansatz ist folgender:

Delphi-Quellcode:
//GUID_TTestContextMenuShellExt ist als Konstante definiert
  ClassID := GUIDToString(GUID_TTestContextMenuShellExt);

//* für alle Dateien
  CreateRegKey('*\Shellex\ContextMenuHandlers\TestName', '', ClassID);

//das hatten alle Scripts, die ich mir dazu angesehen habe. Aber wozu?!
  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, 'TestName');
  finally
    Free;
  end;

  reg:=TRegistry.Create();
  Reg.RootKey:=HKEY_CLASSES_ROOT;

//Name des Eintrags, der im Kontextmenü erscheinen soll
  Reg.OpenKey('*\Shellex\ContextMenuHandlers\TestName',true);
  Reg.WriteString('','Titel des Eintrags');
  Reg.CloseKey;

//Dateien sollen mit dem Programm geöffnet werden
//Ich habe auch schon probiert mit command oder shell\open\command
  Reg.OpenKey('*\Shellex\ContextMenuHandlers\TestName\open\command',true);
  Reg.WriteString('', Format('"%s" "%s"', [ParamStr(0), '%1']));
  Reg.CloseKey;

  reg.free;

  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
Die entsprechenden Keys werden auch alle erzeugt, aber leider erscheint nichts im Kontextmenü. Ich denke es muss sich um eine kleine Korrektur handeln, da ich mich aber nicht so gut mit der Registry auskenne, fällt sie mir nicht ein. Es wäre sehr lieb, wenn ihr mir etwas helfen könntet.
  Mit Zitat antworten Zitat