Получить пути специальных папок

Советы » Каталоги » Получить пути специальных папок

{ 
  Constants: 

  CSIDL_DESKTOP 
  CSIDL_INTERNET 
  CSIDL_PROGRAMS 
  CSIDL_CONTROLS 
  CSIDL_PRINTERS 
  CSIDL_PERSONAL 
  CSIDL_FAVORITES 
  CSIDL_STARTUP 
  CSIDL_RECENT 
  CSIDL_SENDTO 
  CSIDL_BITBUCKET 
  CSIDL_STARTMENU 
  CSIDL_DESKTOPDIRECTORY 
  CSIDL_DRIVES 
  CSIDL_NETWORK 
  CSIDL_NETHOOD 
  CSIDL_FONTS 
  CSIDL_TEMPLATES 
  CSIDL_COMMON_STARTMENU 
  CSIDL_COMMON_PROGRAMS 
  CSIDL_COMMON_STARTUP 
  CSIDL_COMMON_DESKTOPDIRECTORY 
  CSIDL_APPDATA 
  CSIDL_PRINTHOOD 
  CSIDL_ALTSTARTUP 
  CSIDL_COMMON_ALTSTARTUP 
  CSIDL_COMMON_FAVORITES 
  CSIDL_INTERNET_CACHE 
  CSIDL_COOKIES 
  CSIDL_HISTORY 
} 

uses

ActiveX, ShlObj; procedure

TForm1.Button1Click(Sender: TObject); // Replace CSIDL_HISTORY with the constants above var

Allocator: IMalloc; SpecialDir: PItemIdList; FBuf: array

[0..MAX_PATH] of

Char; PerDir: string

; begin

if

SHGetMalloc(Allocator) = NOERROR then

begin

SHGetSpecialFolderLocation(Form1.Handle, CSIDL_HISTORY, SpecialDir); SHGetPathFromIDList(SpecialDir, @FBuf[0]); Allocator.Free(SpecialDir); ShowMessage(string

(FBuf)); end

; end

; // With Windows Me/2000, the SHGetSpecialFolderLocation function // is superseded by ShGetFolderLocation. // function to get the desktop folder location: function

GetDeskTopPath : string

; var

shellMalloc: IMalloc; ppidl: PItemIdList; PerDir: string

; begin

ppidl := nil

; try

if

SHGetMalloc(shellMalloc) = NOERROR then

begin

SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, ppidl); SetLength(Result, MAX_PATH); if

not

SHGetPathFromIDList(ppidl, PChar(Result)) then

raise

exception.create('SHGetPathFromIDList failed : invalid pidl'); SetLength(Result, lStrLen(PChar(Result))); end

; finally

if

ppidl <> nil

then

shellMalloc.free(ppidl); end

; end

;

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com