SHGetNewLinkInfoA 函数 (shellapi.h)

根据快捷方式的建议目标为新快捷方式创建名称。 此函数不创建快捷方式,仅创建名称。

语法

BOOL SHGetNewLinkInfoA(
  [in]  LPCSTR pszLinkTo,
  [in]  LPCSTR pszDir,
  [out] LPSTR  pszName,
  [out] BOOL   *pfMustCopy,
  [in]  UINT   uFlags
);

参数

[in] pszLinkTo

类型:LPCTSTR

指向快捷方式目标的路径和文件名的指针。 如果 uFlags 不包含 SHGNLI_PIDL 值,则此参数是包含目标的以 null 结尾的字符串的地址。 如果 uFlags 包含 SHGNLI_PIDL 值,则此参数是表示目标的 PIDL。

[in] pszDir

类型:LPCTSTR

指向以 null 结尾的字符串的指针,该字符串包含在其中创建快捷方式的文件夹的路径。

[out] pszName

类型:LPTSTR

指向接收快捷方式的以 null 结尾的路径和文件名的字符串的指针。 此缓冲区假定大小至少为MAX_PATH个字符。

[out] pfMustCopy

类型:BOOL*

BOOL 的地址 值,该值接收指示是否复制快捷方式的标志。 创建指向另一个快捷方式的快捷方式时,Shell 只需复制目标快捷方式并修改相应复制的快捷方式。 如果 pszLinkTo 中指定的目标指定了一个快捷方式,则此参数将接收非零值, 指定将导致复制目标快捷方式的快捷方式。 如果目标未指定要复制的快捷方式,此参数将接收零。

[in] uFlags

类型:UINT

函数的选项。 这可以是零,也可以是以下值的组合。

SHGNLI_PIDL(0x000000001)

0x000000001。 pszLinkTo 指向的目标是表示目标的 PIDL。 如果未包含此标志,则 pszLinkTo 被视为包含目标路径和文件名的字符串的地址。

SHGNLI_NOUNIQUE(0x000000002)

0x000000002。 跳过正常检查,确保快捷名称在目标文件夹中是唯一的。 如果未包含此标志,该函数将创建快捷方式名称,然后确定该名称是否在目标文件夹中是唯一的。 如果目标文件夹中已存在同名的文件,将修改快捷方式名称。 此过程将重复,直到找到唯一名称。

SHGNLI_PREFIXNAME(0x000000004)

0x000000004。 创建的名称将前面有字符串“快捷方式” 。

SHGNLI_NOLNK(0x000000008)

0x000000008。 版本 5.0 不要添加.lnk文件扩展名。 必须将 _WIN32_IE 宏设置为 5.01 或更高版本才能使用此标志。 有关版本控制的详细信息,请参阅 Shell 和 Common Controls 版本。

SHGNLI_NOLOCNAME(0x000000010)

0x000000010。 Windows Vista 及更高版本。 使用 pszLinkTo 指向的目标的非本地化分析名称作为快捷文件的名称。 如果未设置此标志,则使用本地化名称。

SHGNLI_USEURLEXT(0x000000020)

0x000000020。 Windows 7 及更高版本。 将 .url 文件扩展名(而不是.lnk)追加到 pszName指向的名称。 如果未设置此标志,则快捷方式名称将使用.lnk扩展,除非设置了SHGNLI_NOLNK。

返回值

类型:BOOL

如果成功,则返回 TRUE;否则,FALSE

言论

SHGetNewLinkInfo 确定目标文件系统是否支持长文件名。 如果这样做,则使用长文件名作为快捷方式名称。 如果目标文件系统不支持长文件名,则以 8.3 格式返回快捷方式名称。

注意

shellapi.h 标头将 SHGetNewLinkInfo 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional、Windows XP、Windows 7 [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 shellapi.h
Shell32.lib
DLL Shell32.dll(版本 4.71 或更高版本)