SHGetNewLinkInfoW 函数 (shellapi.h)

基于快捷方式的建议目标为新快捷方式创建一个名称。 此函数不会创建快捷方式,而只会创建名称。

语法

BOOL SHGetNewLinkInfoW(
  [in]  LPCWSTR pszLinkTo,
  [in]  LPCWSTR pszDir,
  [out] LPWSTR  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 和公共控件版本。

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 专业版、Windows XP、Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shellapi.h
Library Shell32.lib
DLL Shell32.dll (4.71 或更高版本)