カレントユーザのデスクトップディレクトリを得る
|
>実行中に現在の(ユーザの)「デスクトップ」ディレクトリのパスを取得したい
>のですが、どうすれば良いのでしょうか?
こんなの有ります。
uses ShellAPI, SHlObj, ComObj, ActiveX;
:
:
function GetDesktopFolder: string;
function GetDispName(shi: IShellFolder; pidl: PItemIDList): string;
var DispName: TStrRet;
begin
shi.GetDisplayNameOf(pidl, SHGDN_FORPARSING, DispName);
if DispName.uType = STRRET_CSTR then
Result := DispName.cStr
else if DispName.uType = STRRET_OFFSET then
Result := PCHAR(LongInt(pidl) + DispName.uOffset)
else
Result := WideCharToString(DispName.pOleStr);
end;
var Pidl: PItemIDList;
DesktopFolderI: IShellFolder;
begin
OleCheck(SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, Pidl));
try
OleCheck(SHGetDesktopFolder(DesktopFolderI));
Result := GetDispName(DesktopFolderI, Pidl);
finally
CoTaskMemFree(Pidl);
end;
end; |
|