Метод 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 переименованного элемента. Вызывающий объект запрашивает это значение путем передачи ppidlOut, отличного от null. Реализации IShellFolder::SetNameOf должны возвращать указатель на новый ITEMIDLIST в параметре ppidlOut .
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Изменение отображаемого имени объекта файловой системы или папки в нем переименовывает файл или каталог.
Перед вызовом этого метода приложения должны вызвать IShellFolder::GetAttributesOf и проверка, что установлен флаг SFGAO_CANRENAME. Обратите внимание, что этот флаг по сути является указанием для клиентов пространства имен. Это не обязательно означает, что IShellFolder::SetNameOf будет успешно или неудачно.
Исполнители IShellFolder::SetNameOf должны вызывать SHChangeNotify как со старыми, так и с новыми абсолютными PIDL после завершения переименования объекта. В следующем примере показан вызов SHChangeNotify после переименования объекта folder.
SHChangeNotify(SHCNE_RENAMEFOLDER, SHCNF_IDLIST, pidlFullOld, pidlFullNew);
Этот вызов предотвращает отображение в представлении старых и новых имен.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | shobjidl_core.h (включая Shobjidl.h) |
DLL | Shell32.dll (версия 4.0 или более поздняя) |