得到Window快捷方式的具体路径

Uses ActiveX, ShlObj;

function GetLinkFile(const LnkFileName: String; var FileName: String): Boolean;
var
    hr: HRESULT;
    psl: IShelllink;
    wfd: WIN32_FIND_DATA;
    ppf: IPersistFile;
    lpw: pWideChar;
    buf: pWideChar;
    InternalFileName: Array[0..MAX_PATH] of Char;
begin
    Result := False;
    GetMem(buf, MAX_PATH);
    try
        if Succeeded(CoInitialize(nil)) then
        if (Succeeded(CocreateInstance(CLSID_SHELLLINK, Nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl))) then
        begin
            hr := psl.QueryInterface(iPersistFile, ppf);
            if Succeeded(hr) then
            begin
                lpw := StringToWideChar(LnkFileName, buf, MAX_PATH);
                hr := ppf.Load(lpw, STGM_READ);
                if Succeeded(hr) then
                begin
                    hr := psl.Resolve(0, SLR_NO_UI);
                    if Succeeded(hr) then
                    begin
                        psl.GetPath(InternalFileName, MAX_PATH, wfd, SLGP_SHORTPATH);
                        FileName := InternalFileName;
                        Result := True;
                    end;
                end;
            end;
        end;
    finally
        FreeMem(buf);
    end;
end;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值