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.