Thema: Delphi Kontext Menu Handler..?

Einzelnen Beitrag anzeigen

Prototypjack

Registriert seit: 2. Feb 2003
611 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Kontext Menu Handler..?

  Alt 18. Jul 2007, 20: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
  Mit Zitat antworten Zitat