Compartir a través de


Método IShellFolder::SetNameOf (shobjidl_core.h)

Establece el nombre para mostrar de un objeto de archivo o subcarpeta, cambiando el identificador del elemento en el proceso.

Sintaxis

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

Parámetros

[in] hwnd

Tipo: HWND

Identificador de la ventana de propietario de cualquier cuadro de diálogo o mensaje que muestre el cliente.

[in] pidl

Tipo: PCUITEMID_CHILD

Puntero a una estructura ITEMIDLIST que identifica de forma única el objeto de archivo o la subcarpeta en relación con la carpeta primaria. La estructura debe contener exactamente una estructura SHITEMID seguida de un cero de terminación.

[in] pszName

Tipo: LPCWSTR

Puntero a una cadena terminada en null que especifica el nuevo nombre para mostrar.

[in] uFlags

Tipo: SHGDNF

Marcas que indican el tipo de nombre especificado por el parámetro pszName . Para obtener una lista de posibles valores y combinaciones de valores, consulte SHGDNF.

[out] ppidlOut

Tipo: PITEMID_CHILD*

Opcional. Si se especifica, la dirección de un puntero a una estructura ITEMIDLIST que recibe itemIDLIST del elemento cuyo nombre ha cambiado. El autor de la llamada solicita este valor pasando un ppidlOut que no sea NULL. Las implementaciones de IShellFolder::SetNameOf deben devolver un puntero al nuevo ITEMIDLIST en el parámetro ppidlOut .

Valor devuelto

Tipo: HRESULT

Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.

Comentarios

Al cambiar el nombre para mostrar de un objeto del sistema de archivos o una carpeta dentro de él, se cambia el nombre del archivo o directorio.

Antes de llamar a este método, las aplicaciones deben llamar a IShellFolder::GetAttributesOf y comprobar que la marca SFGAO_CANRENAME está establecida. Tenga en cuenta que esta marca es básicamente una sugerencia para los clientes de espacio de nombres. No implica necesariamente que IShellFolder::SetNameOf se realice correctamente o no.

Los implementadores de IShellFolder::SetNameOf deben llamar a SHChangeNotify con los PIN absolutos antiguos y nuevos una vez completado el cambio de nombre de un objeto. En este ejemplo se muestra la llamada a SHChangeNotify después del cambio de nombre de un objeto de carpeta.

SHChangeNotify(SHCNE_RENAMEFOLDER, SHCNF_IDLIST, pidlFullOld, pidlFullNew);

Esta llamada impide que los nombres antiguos y nuevos se muestren en la vista.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado shobjidl_core.h (include Shobjidl.h)
Archivo DLL Shell32.dll (versión 4.0 o posterior)