Compartir a través de


Función SHGetFileInfoA (shellapi.h)

Recupera información sobre un objeto en el sistema de archivos, como un archivo, una carpeta, un directorio o una raíz de unidad.

Sintaxis

DWORD_PTR SHGetFileInfoA(
  [in]      LPCSTR      pszPath,
            DWORD       dwFileAttributes,
  [in, out] SHFILEINFOA *psfi,
            UINT        cbFileInfo,
            UINT        uFlags
);

Parámetros

[in] pszPath

Tipo: LPCTSTR de

Puntero a un cadena terminadanull de longitud máxima MAX_PATH que contiene la ruta de acceso y el nombre de archivo. Las rutas de acceso absolutas y relativas son válidas.

Si el parámetro uFlags incluye la marca SHGFI_PIDL, este parámetro debe ser la dirección de una estructura ITEMIDLIST (PIDL) que contiene la lista de identificadores de elemento que identifica de forma única el archivo dentro del espacio de nombres del shell. El PIDL debe ser un PIDL completo. No se permiten PIN relativos.

Si el parámetro uFlags incluye la marca SHGFI_USEFILEATTRIBUTES, este parámetro no tiene que ser un nombre de archivo válido. La función continuará como si el archivo exista con el nombre especificado y con los atributos de archivo pasados en el parámetro dwFileAttributes. Esto le permite obtener información sobre un tipo de archivo pasando solo la extensión de pszPath y pasando FILE_ATTRIBUTE_NORMAL en dwFileAttributes.

Esta cadena puede usar nombres de archivo cortos (el formulario 8.3) o largos.

dwFileAttributes

Tipo: DWORD de

Combinación de una o varias marcas de atributos de archivo (FILE_ATTRIBUTE_ valores tal como se define en Winnt.h). Si uFlags no incluye la marca SHGFI_USEFILEATTRIBUTES, este parámetro se omite.

[in, out] psfi

Tipo: * SHFILEINFO

Puntero a una estructura de SHFILEINFO para recibir la información del archivo.

cbFileInfo

Tipo: UINT

Tamaño, en bytes, de la estructura de SHFILEINFO a la que apunta el parámetro psfi.

uFlags

Tipo: UINT

Marcas que especifican la información del archivo que se va a recuperar. Este parámetro puede ser una combinación de los siguientes valores.

SHGFI_ADDOVERLAYS (0x000000020)

versión 5.0. Aplique las superposiciones adecuadas al icono del archivo. También se debe establecer la marca SHGFI_ICON.

SHGFI_ATTR_SPECIFIED (0x000020000)

Modifique SHGFI_ATTRIBUTES para indicar que el dwAttributes miembro de la estructura SHFILEINFO en psfi contiene los atributos específicos que se desean. Estos atributos se pasan a IShellFolder::GetAttributesOf. Si no se especifica esta marca, 0xFFFFFFFF se pasa a IShellFolder::GetAttributesOf, solicitando todos los atributos. Esta marca no se puede especificar con la marca SHGFI_ICON.

SHGFI_ATTRIBUTES (0x000000800)

Recupere los atributos de elemento. Los atributos se copian en el dwAttributes miembro de la estructura especificada en el parámetro psfi de . Estos son los mismos atributos que se obtienen de IShellFolder::GetAttributesOf.

SHGFI_DISPLAYNAME (0x000000200)

Recupere el nombre para mostrar del archivo, que es el nombre tal como aparece en el Explorador de Windows. El nombre se copia en el miembro szDisplayName de la estructura especificada en psfi. El nombre para mostrar devuelto usa el nombre de archivo largo, si hay uno, en lugar del formato 8.3 del nombre de archivo. Tenga en cuenta que el nombre para mostrar puede verse afectado por la configuración, como si se muestran extensiones.

SHGFI_EXETYPE (0x000002000)

Recupere el tipo del archivo ejecutable si pszPath identifica un archivo ejecutable. La información se empaqueta en el valor devuelto. Esta marca no se puede especificar con ninguna otra marca.

SHGFI_ICON (0x000000100)

Recupere el identificador del icono que representa el archivo y el índice del icono dentro de la lista de imágenes del sistema. El identificador se copia en el miembro hIcon de la estructura especificada por psfiy el índice se copia en el miembro iIcon.

SHGFI_ICONLOCATION (0x000001000)

Recupere el nombre del archivo que contiene el icono que representa el archivo especificado por pszPath, tal y como devuelve el método IExtractIcon::GetIconLocation método del controlador de iconos del archivo. Recupere también el índice de icono dentro de ese archivo. El nombre del archivo que contiene el icono se copia en el miembro szDisplayName de la estructura especificada por psfi. El índice del icono se copia en el miembro iIcon de esa estructura.

SHGFI_LARGEICON (0x000000000)

Modifique SHGFI_ICON, lo que hace que la función recupere el icono grande del archivo. También se debe establecer la marca SHGFI_ICON.

SHGFI_LINKOVERLAY (0x000008000)

Modifique SHGFI_ICON, lo que hace que la función agregue la superposición de vínculo al icono del archivo. También se debe establecer la marca SHGFI_ICON.

SHGFI_OPENICON (0x000000002)

Modifique SHGFI_ICON, lo que hace que la función recupere el icono abierto del archivo. También se usa para modificar SHGFI_SYSICONINDEX, lo que hace que la función devuelva el identificador a la lista de imágenes del sistema que contiene el icono de apertura pequeño del archivo. Un objeto contenedor muestra un icono abierto para indicar que el contenedor está abierto. También se debe establecer la marca SHGFI_ICON o SHGFI_SYSICONINDEX.

SHGFI_OVERLAYINDEX (0x000000040)

versión 5.0. Devuelve el índice del icono de superposición. El valor del índice de superposición se devuelve en los ocho bits superiores del miembro iIcon de la estructura especificada por psfi. Esta marca requiere que también se establezca el SHGFI_ICON.

SHGFI_PIDL (0x000000008)

Indique que pszPath es la dirección de una estructura ITEMIDLIST en lugar de un nombre de ruta de acceso.

SHGFI_SELECTED (0x000010000)

Modifique SHGFI_ICON, lo que hace que la función combine el icono del archivo con el color de resaltado del sistema. También se debe establecer la marca SHGFI_ICON.

SHGFI_SHELLICONSIZE (0x000000004)

Modifique SHGFI_ICON, lo que hace que la función recupere un icono de tamaño de Shell. Si no se especifica esta marca, la función cambia el tamaño del icono según los valores de métrica del sistema. También se debe establecer la marca SHGFI_ICON.

SHGFI_SMALLICON (0x000000001)

Modifique SHGFI_ICON, lo que hace que la función recupere el icono pequeño del archivo. También se usa para modificar SHGFI_SYSICONINDEX, lo que hace que la función devuelva el identificador a la lista de imágenes del sistema que contiene imágenes de icono pequeñas. También se debe establecer la marca SHGFI_ICON o SHGFI_SYSICONINDEX.

SHGFI_SYSICONINDEX (0x000004000)

Recupere el índice de un icono de lista de imágenes del sistema. Si se ejecuta correctamente, el índice se copia en el miembro iIcon de psfi. El valor devuelto es un identificador de la lista de imágenes del sistema. Solo las imágenes cuyos índices se copian correctamente en iIcon son válidos. Si intenta acceder a otras imágenes de la lista de imágenes del sistema, se producirá un comportamiento indefinido.

SHGFI_TYPENAME (0x000000400)

Recupere la cadena que describe el tipo del archivo. La cadena se copia en el miembro szTypeName de la estructura especificada en psfi.

SHGFI_USEFILEATTRIBUTES (0x000000010)

Indica que la función no debe intentar tener acceso al archivo especificado por pszPath. En su lugar, debe actuar como si el archivo especificado por pszPath existe con los atributos de archivo pasados en dwFileAttributes. Esta marca no se puede combinar con las marcas SHGFI_ATTRIBUTES, SHGFI_EXETYPEo SHGFI_PIDL.

Valor devuelto

Tipo: DWORD_PTR

Devuelve un valor cuyo significado depende del parámetro uFlags.

Si uFlags no contiene SHGFI_EXETYPE o SHGFI_SYSICONINDEX, el valor devuelto es distinto de cero si es correcto o cero de lo contrario.

Si uFlags contiene la marca SHGFI_EXETYPE, el valor devuelto especifica el tipo del archivo ejecutable. Será uno de los siguientes valores.

Código devuelto Descripción
0
Archivo nonexecutable o una condición de error.
LOWORD = NE o PE e HIWORD = versión de Windows
Aplicación Windows.
LOWORD = MZ e HIWORD = 0
archivo de MS-DOS .exe o .com
LOWORD = PE y HIWORD = 0
Aplicación de consola o archivo de .bat

Observaciones

Debe llamar a esta función desde un subproceso en segundo plano. Si no lo hace, la interfaz de usuario podría dejar de responder.

Si SHGetFileInfo devuelve un identificador de icono en el miembro hIcon del SHFILEINFO estructura apuntada por psfi, usted es responsable de liberarlo con DestroyIcon cuando ya no lo necesite.

Nota Una vez que tenga un identificador para una lista de imágenes del sistema, puede usar la API de lista de imágenes de para manipularla como cualquier otra lista de imágenes. Dado que las listas de imágenes del sistema se crean por proceso, debe tratarlas como objetos de solo lectura. Escribir en una lista de imágenes del sistema puede sobrescribir o eliminar una de las imágenes del sistema, lo que hace que no esté disponible o incorrecto durante el resto del proceso.
 
Debe inicializar el modelo de objetos componentes (COM) con CoInitialize o OleInitialize antes de llamar a SHGetFileInfo.

Cuando se usa la marca SHGFI_EXETYPE con una aplicación de Windows, la versión de Windows del archivo ejecutable se da en el HIWORD del valor devuelto. Esta versión se devuelve como un valor hexadecimal. Para obtener más información sobre cómo equiparar este valor con una versión específica de Windows, consulte Using the Windows Headers.

Ejemplos

En el ejemplo de código siguiente se usa shGetFileInfo para recuperar el nombre para mostrar de la papelera de reciclaje, identificado por su PIDL.

LPITEMIDLIST pidl = NULL;
hr = SHGetFolderLocation(NULL, CSIDL_BITBUCKET, NULL, 0, &pidl);

if (SUCCEEDED(hr))                    
{
    SHFILEINFOW sfi = {0};
    hr = SHGetFileInfo((LPCTSTR)pidl,
                        -1,
                        &sfi,
                        sizeof(sfi),
                        SHGFI_PIDL | SHGFI_DISPLAYNAME)
            
    if (SUCCEEDED(hr))
    {
        // The display name is now held in sfi.szDisplayName.
    }
}

ILFree(pidl);

Nota

El encabezado shellapi.h define SHGetFileInfo como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Conventions for Function Prototypes.

Requisitos

Requisito Valor
cliente mínimo admitido Windows XP [solo aplicaciones de escritorio]
servidor mínimo admitido Windows 2000 Server [solo aplicaciones de escritorio]
de la plataforma de destino de Windows
encabezado de shellapi.h
biblioteca de Shell32.lib
DLL de Shell32.dll (versión 4.0 o posterior)

Consulte también

fileIconInit