怎样得到windows的默认当前用户临时目录(50分)

  • 主题发起人 主题发起人 我爱PASCAL
  • 开始时间 开始时间

我爱PASCAL

Unregistered / Unconfirmed
GUEST, unregistred user!
环境变量 %homepath%
 
function GetTempDirectory: String;
var
TempDir: array[0..255] of Char;
begin
GetTempPath(255, @TempDir);
Result := StrPas(TempDir);
end;
 
function GetTempDirectory: String;
var
TempDir: array[0..255] of Char;
begin
GetTempPath(255, @TempDir);
Result := StrPas(TempDir);
end;
 
谢谢大家,试了一下,这个函数可以用,但是得到的是缩写的dos8位数的路径名,能不能得到无缩写全路径串,
 
//uses ShlObj
function GetSpecialFolderDir(const folderid: integer): string;
var
pidl: pItemIDList;
buffer: array[0..255] of char;
begin
SHGetSpecialFolderLocation(application.Handle, folderid, pidl);
SHGetPathFromIDList(pidl, buffer);
Result := strpas(buffer);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
Memo1.Lines.Add(Format('%26s : %s', ['Template文件夹', GetSpecialFolderDir(21)]));
Memo1.Lines.Add(Format('%26s : %s', ['Template文件夹(All)', GetSpecialFolderDir(45)]));
end;
 
function GetLongPathName(lpszShortPath: PAnsiChar; lpszLongPath: PAnsiChar;
cchBuffer: DWORD): DWORD; stdcall;external kernel32 name 'GetLongPathNameA';

function GetTempDirectory: String;
var
ShortPath,LongPath: array [0..255] of char;
begin
GetTempPath(255,ShortPath);
GetLongPathName(ShortPath,LongPath,255);
result:=LongPath;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
caption:= GetTempDirectory;
end;
 
试了下上面两位朋友的方法,比较完美,只不过前者得到的是所有用户的temp目录
而后者得到的是当前用户的.
谢谢大家,很不好意思分放少了点.
 
[:)]谢谢大家
 
后退
顶部