Einzelnen Beitrag anzeigen

Benutzerbild von Sko
Sko

Registriert seit: 11. Sep 2005
327 Beiträge
 
Turbo Delphi für Win32
 
#1

Shellextension für alle Dateien (HKEY_CLASSES_ROOT\*)

  Alt 27. Mär 2008, 13:34
Hallo,

ich möchte eine Shellextension registrieren und habe mir dazu Luckie´s ExifReader angesehen und angepasst, das Ganze funktioniert ja ganz gut bei bestimmten Dateitypen, wenn ich´s aber für alle haben möchte (*), kommt beim registrieren immer "DllRegisterServer in Blub.dll fehlgeschlagen. Fehlercode: 0x80004005". Weis jemand warums dort nicht geht und wie man´s sonst machen muss? Hier noch der Code:

Delphi-Quellcode:
procedure TBlubExtFactory.UpdateRegistry(Register: Boolean);
var
  ClassID: string;
  rgHandle: HKEY;
  lpType, cbData: DWORD;
  s: string;
begin
  s := '';
  if RegOpenKeyEx(HKEY_CLASSES_ROOT, '*', 0, KEY_READ, rgHandle) = // < da stehts, mit '*' kommt ein Fehler, mit z.B. '.jpg' oder '.bmp' läufts
    ERROR_SUCCESS then
  begin
    try
      if RegQueryValueEx(rgHandle, '', nil, @lpType, nil, @cbData) =
        ERROR_SUCCESS then
      begin
        setlength(s, cbData);
        RegQueryValueEx(rgHandle, '', nil, nil, @s[1], @cbData);
        setlength(s, cbData - 1);
      end;
    finally
      RegCloseKey(rgHandle);
    end;
  end;
  if Register then
  begin
    inherited UpdateRegistry(Register);
    ClassID := GUIDToString(GUID_BLUBEXT);
    CreateRegKey(s + '\shellex', '', '');
    CreateRegKey(s + '\shellex\ContextMenuHandlers', '', '');
    CreateRegKey(s + '\shellex\ContextMenuHandlers\BlubExt', '', ClassID);
  end
  else
  begin
    DeleteRegKey(s + '\shellex\ContextMenuHandlers\BlubExt');
    inherited UpdateRegistry(Register);
  end;
end;
MfG Sko
Zitat von Phoenix:
[OT]Phoenix guckt in die Glaskugel, zuckt mit den Flügelspitzen, krächzt etwas von wegen 'Boden' und 'Scherben' und schubbst die Kugel in Richtung Tischkante.[/OT]
Rockbox
  Mit Zitat antworten Zitat