Поделиться через


Метод 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 или более поздняя)