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*
可选。 如果指定,则为指向接收重命名项的 ITEMIDLIST 的 ITEMIDLIST 结构的指针的地址。 调用方通过传递非 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 或更高版本) |