Io uso il seguente codice per ottenere directory specialiGet My Documents percorso della cartella in Delphi
uses
ActiveX, ShlObj;
{...}
procedure TForm1.Button1Click(Sender: TObject);
// Replace CSIDL_HISTORY with the constants below
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_PERSONAL, SpecialDir);
SHGetPathFromIDList(SpecialDir, @FBuf[0]);
Allocator.Free(SpecialDir);
ShowMessage(string(FBuf));
end;
end;
e ora voglio per ottenere il percorso miei documenti così io uso mydocfolderpath: = string (FBuf) + ' \ Documenti 'e penso che funzioni bene ma il mio dubbio è questo il percorso mydocuments su tutti i PC Windows (personalfolder/documenti) l'utente può cambiare questa struttura e rendere la mia cartella documenti anywhare else (es: c: \ documenti) se l'utente cambia il percorso mi dà un modo corretto e mi piace sapere qual è il nome della cartella mydocuments (Documenti o Documenti)
Essere consapevoli del fatto che alcune versione di Windows utilizzare localizzato nomi di percorso. A meno che tu non sia completamente sicuro di quale versione e lingua stai utilizzando, non aggiungere mai un nome di cartella "speciale" come costante di una stringa in inglese o in qualsiasi lingua. Potrebbe non essere il nome corretto sul sistema di destinazione. Utilizza sempre uno dei CSIDL_ specifici o il loro equivalente più recente. –