Thema: Delphi Autostart

Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#8

AW: Autostart

  Alt 9. Okt 2015, 19:13
Einfach selber definieren.

Delphi-Quellcode:
const
  FOLDERID_Startup : TGUID = '{B97D20BB-F46A-4C97-BA10-5E3608430854}';

weitere GUIDs findest Du im Link von mm1256

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Delphi kennt die Konstanten noch nicht, sind ja erst seit Windows Vista vorhanden

Deshalb auch am besten auch dynamisch linken:

Delphi-Quellcode:
const
  SHELL32_DLL : String = 'SHELL32.DLL';

// Systemordner ab Vista ermitteln
// DYNAMISCHER FUNKTIONSIMPORT !!!
type
  TShGetKnownFolderPath = function(const rfid : TGUID;
                                   dwFlags : DWord;
                                   hToken : THandle;
                                   out ppszPath : PWideChar): HResult; stdcall;

{*** Systemordner ab Vista ermitteln ***}
function ShGetKnownFolderPath(const rfid: TGUID;
                              dwFlags: DWord;
                              hToken: THandle;
                              out ppszPath: PWideChar): HResult;
var
  DLL_Handle : THandle;
  DLL_ShGetKnownFolderPath : TShGetKnownFolderPath;
begin
  Result := 0;
  // Handle für die SHELL32.DLL erhalten
  DLL_Handle := LoadLibrary(PChar(SHELL32_DLL));
  // Wenn Handle vorhanden, Adressen der Funktionen ermitteln
  if DLL_Handle <> 0 then begin
    try
      // Adressen ermitteln
      @DLL_ShGetKnownFolderPath := GetProcAddress(DLL_Handle, 'SHGetKnownFolderPath');
      // Wurde SHGetKnownFolderPath in der DLL gefunden?
      if @DLL_ShGetKnownFolderPath <> nil then begin
        Result:= DLL_ShGetKnownFolderPath(rfid, dwFlags, hToken, ppszPath);
      end else begin
        RaiseLastOSError;
      end;
    finally
      FreeLibrary(DLL_Handle);
    end;
  end else begin
    RaiseLastOSError;
  end;
end;
  Mit Zitat antworten Zitat