uses Windows, SHFolder; function GetSpecialFolder(csidl: Integer): String; var Buffer: array [0..MAX_PATH] of Char; begin Result := ''; if Succeeded(SHGetFolderPath(0,csidl,0,0,Buffer)) = True then begin Result := Buffer; end; end;
ただし全てのCSIDL_...が有効なパスを返すとは限らない(SHGetFolderPathでパスが取得できないCSIDLもあり、また環境にも依存する)ので注意が必要。
2008/07/17追記: SHGetFolderPathの第4パラメータは正確には
SHGFP_TYPE_CURRENT(0): 実際のパス
SHGFP_TYPE_DEFAULT(1): デフォルトのパス
のどちらかを指定します。SHGFP_TYPE_CURRENTを指定するとユーザによって特殊フォルダのパス名が変更されていた場合でもこれを反映したものを返します。SHGFP_TYPE_DEFAULTを指定するとシステム本来の(デフォルトの)パスを返します。
0 件のコメント:
コメントを投稿