Registriert seit: 2. Feb 2003
611 Beiträge
Delphi 2009 Professional
|
Re: Kontext Menu Handler..?
18. Jul 2007, 21:33
Moin,
Stimmt, das dachte ich auch zuerst, aber folgender Code bringt auch keine Besserung:
Delphi-Quellcode:
procedure TDFKontextMenuShellExtFactory.UpdateRegistry( Register: boolean);
var
ClassID: string;
rgHandle: HKEY;
lpType, cbData: DWORD;
lExe: string;
begin
inherited;
//Filestrings zuweisen
if RegOpenKeyEx(HKEY_CLASSES_ROOT, ' .zip', 0, KEY_READ, rgHandle) =
ERROR_SUCCESS then
begin
try
if RegQueryValueEx(rgHandle, ' ', nil, @lpType, nil, @cbData) =
ERROR_SUCCESS then
begin
setlength(lExe, cbData);
RegQueryValueEx(rgHandle, ' ', nil, nil, @lExe[1], @cbData);
setlength(lExe, cbData - 1);
end;
finally
RegCloseKey(rgHandle);
end;
end;
if Register then
begin
inherited UpdateRegistry( Register);
ClassID := GUIDToString(GUID_TDFKontextMenuShellExt);
try
CreateRegKey(lExe + ' \shellex', ' ', ' ');
CreateRegKey(lExe + ' \shellex\ContextMenuHandlers', ' ', ' ');
CreateRegKey(lExe + ' \shellex\ContextMenuHandlers\DFKontextMenu', ' ', ClassID);
CreateRegKey(' CLSID', ' ', ' ');
CreateRegKey(' CLSID\' + ClassID, ' ', ' ');
CreateRegKey(' CLSID\' + ClassID + ' \InProcServer32', ' ', ' C:\Dokumente und Einstellungen\Max\Desktop\DFKontextMenu');
CreateRegKey(' CLSID\' + ClassID + ' \InProcServer32', ' ThreadingModel', ' Apartment');
except
end;
// 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, 'DFKontextMenu');
// finally
// Free;
// end;
end
else
begin
try
DeleteRegKey(lExe + ' \shellex\ContextMenuHandlers\DFKontextMenu');
except
end;
end;
end;
Grüße,
Max
Edit: Code verändert. Siehe übernächster Beitrag
Max „If you have any great suggestions, feel free to mail me, and I'll probably feel free to ignore you.“ . Linus Torvalds
|