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 件のコメント:
コメントを投稿