IShellFolder::SetNameOf 方法 (shobjidl_core.h)

设置文件对象或子文件夹的显示名称,从而更改进程中的项标识符。

语法

HRESULT SetNameOf(
  [in]  HWND            hwnd,
  [in]  PCUITEMID_CHILD pidl,
  [in]  LPCWSTR         pszName,
  [in]  SHGDNF          uFlags,
  [out] PITEMID_CHILD   *ppidlOut
);

参数

[in] hwnd

类型:HWND

客户端显示的任何对话框或消息框的所有者窗口的句柄。

[in] pidl

类型: PCUITEMID_CHILD

指向 ITEMIDLIST 结构的指针,该结构唯一标识相对于父文件夹的文件对象或子文件夹。 结构必须恰好包含一个 SHITEMID 结构,后跟一个终止零。

[in] pszName

类型: LPCWSTR

指向以 null 结尾的字符串的指针,该字符串指定新的显示名称。

[in] uFlags

类型: SHGDNF

指示 pszName 参数指定的名称类型的标志。 有关可能的值和值组合的列表,请参阅 SHGDNF

[out] ppidlOut

类型: PITEMID_CHILD*

可选。 如果指定,则为指向接收重命名项的 ITEMIDLISTITEMIDLIST 结构的指针的地址。 调用方通过传递非 null ppidlOut 来请求此值。 IShellFolder::SetNameOf 的实现必须返回指向 ppidlOut 参数中新 ITEMIDLIST 的指针。

返回值

类型: HRESULT

如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

更改文件系统对象或其中文件夹的显示名称会重命名文件或目录。

在调用此方法之前,应用程序应调用 IShellFolder::GetAttributesOf 并检查设置SFGAO_CANRENAME标志。 请注意,此标志实质上是命名空间客户端的提示。 它不一定意味着 IShellFolder::SetNameOf 会成功或失败。

一旦对象的重命名完成, IShellFolder::SetNameOf 的实现者必须使用旧的和新的绝对 PIDL 调用 SHChangeNotify 。 以下示例演示重命名文件夹对象后对 SHChangeNotify 的调用。

SHChangeNotify(SHCNE_RENAMEFOLDER, SHCNF_IDLIST, pidlFullOld, pidlFullNew);

此调用可防止在视图中同时显示新旧名称。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 shobjidl_core.h (包括 Shobjidl.h)
DLL Shell32.dll (版本 4.0 或更高版本)