Delphi Tips 
-----------------------------

0163  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/02/11 osamu rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/02/11 osamu 編集
カレントユーザのデスクトップディレクトリを得る

>実行中に現在の(ユーザの)「デスクトップ」ディレクトリのパスを取得したい
>のですが、どうすれば良いのでしょうか?

こんなの有ります。
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;
参照: [Delphi-ML:31606] <Windows> <ファイル>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp