[Delphi] デスクトップフォルダーのパス名を取得

・usesに ShlObj, ActiveX, ComObj を追加

//======================================================================
//  機能:デスクトップフォルダーのパス名を取得
//======================================================================
function GetWindowsDeskTopPath: string;
const
    nFolder = CSIDL_DESKTOP;    {デスクトップ}
var
        Directory : array[0..MAX_PATH] of Char;
        UnknownObject: IUnknown;
        psl: IShellLink;
        ppf: IPersistFile;
        lpi: PItemIDList;
        ppmem: IMalloc;
begin
    Result := '取得エラー';
    UnknownObject := CreateComObject(CLSID_ShellLink);
    if not Assigned(UnknownObject) then Exit;
    psl:= UnknownObject as IShellLink;
    ppf:= UnknownObject as IPersistFile;
    if not Assigned(psl) or not Assigned(ppf) then Exit;
    if FAILED(ShGetMalloc(ppmem)) then Exit;
    if FAILED(SHGetSpecialFolderLocation(0, nFolder, lpi)) then Exit;
    if not SHGetPathFromIDList(lpi, Directory) then begin
        if Assigned(lpi) then ppmem.Free(lpi);
        Exit;
    end;
    Result := Directory;
end;
      

・インターネット上の情報や書籍の内容を一部参考に作成してます。
・コーディング内容は著作権フリーですが、使用する場合は自己責任にてお願いします。
・記述内容に問題点や改善点がありましたらこちらまでお願いします。

サンプル集の一覧に戻る