Função SHGetFileInfoA (shellapi.h)
Recupera informações sobre um objeto no sistema de arquivos, como um arquivo, pasta, diretório ou raiz da unidade.
Sintaxe
DWORD_PTR SHGetFileInfoA(
[in] LPCSTR pszPath,
DWORD dwFileAttributes,
[in, out] SHFILEINFOA *psfi,
UINT cbFileInfo,
UINT uFlags
);
Parâmetros
[in] pszPath
Tipo: LPCTSTR
Um ponteiro para um cadeia de caracteres nulaterminada de comprimento máximo MAX_PATH que contém o caminho e o nome do arquivo. Os caminhos absolutos e relativos são válidos.
Se o parâmetro uFlags incluir o sinalizador SHGFI_PIDL, esse parâmetro deverá ser o endereço de uma estrutura PIDL ( ITEMIDLIST) que contém a lista de identificadores de item que identifica exclusivamente o arquivo no namespace do Shell. O PIDL deve ser um PIDL totalmente qualificado. PIDLs relativos não são permitidos.
Se o parâmetro uFlags incluir o sinalizador SHGFI_USEFILEATTRIBUTES, esse parâmetro não precisará ser um nome de arquivo válido. A função continuará como se o arquivo existisse com o nome especificado e com os atributos de arquivo passados no parâmetro dwFileAttributes. Isso permite que você obtenha informações sobre um tipo de arquivo passando apenas a extensão para pszPath e passando FILE_ATTRIBUTE_NORMAL em dwFileAttributes.
Essa cadeia de caracteres pode usar nomes curtos (o formulário 8.3) ou longos.
dwFileAttributes
Tipo: DWORD
Uma combinação de um ou mais sinalizadores de atributo de arquivo (valores FILE_ATTRIBUTE_ conforme definido em Winnt.h). Se uFlags não incluir o sinalizador SHGFI_USEFILEATTRIBUTES, esse parâmetro será ignorado.
[in, out] psfi
Ponteiro para uma estrutura SHFILEINFO
cbFileInfo
Tipo: UINT
O tamanho, em bytes, da estrutura de SHFILEINFO
uFlags
Tipo: UINT
Os sinalizadores que especificam as informações de arquivo a serem recuperadas. Esse parâmetro pode ser uma combinação dos valores a seguir.
SHGFI_ADDOVERLAYS (0x000000020)
versão 5.0. Aplique as sobreposições apropriadas ao ícone do arquivo. O sinalizador SHGFI_ICON também deve ser definido.
SHGFI_ATTR_SPECIFIED (0x000020000)
Modifique
SHGFI_ATTRIBUTES (0x000000800)
Recupere os atributos do item. Os atributos são copiados para o dwAttributes membro da estrutura especificada no parâmetro psfi. Esses são os mesmos atributos obtidos de IShellFolder::GetAttributesOf.
SHGFI_DISPLAYNAME (0x000000200)
Recupere o nome de exibição do arquivo, que é o nome que aparece no Windows Explorer. O nome é copiado para o szDisplayName membro da estrutura especificada em psfi. O nome de exibição retornado usará o nome de arquivo longo, se houver um, em vez da forma 8.3 do nome do arquivo. Observe que o nome de exibição pode ser afetado por configurações como se as extensões são mostradas.
SHGFI_EXETYPE (0x000002000)
Recupere o tipo do arquivo executável se pszPath identificar um arquivo executável. As informações são empacotadas no valor retornado. Esse sinalizador não pode ser especificado com nenhum outro sinalizador.
SHGFI_ICON (0x000000100)
Recupere o identificador para o ícone que representa o arquivo e o índice do ícone na lista de imagens do sistema. O identificador é copiado para o
SHGFI_ICONLOCATION (0x000001000)
Recupere o nome do arquivo que contém o ícone que representa o arquivo especificado por pszPath, conforme retornado pelo método IExtractIcon::GetIconLocation do manipulador de ícones do arquivo. Recupere também o índice de ícone dentro desse arquivo. O nome do arquivo que contém o ícone é copiado para o membro szDisplayName da estrutura especificada por psfi. O índice do ícone é copiado para o membro iIcon da estrutura.
SHGFI_LARGEICON (0x000000000)
Modifique SHGFI_ICON, fazendo com que a função recupere o ícone grande do arquivo. O sinalizador SHGFI_ICON também deve ser definido.
SHGFI_LINKOVERLAY (0x000008000)
Modifique SHGFI_ICON, fazendo com que a função adicione a sobreposição de link ao ícone do arquivo. O sinalizador SHGFI_ICON também deve ser definido.
SHGFI_OPENICON (0x000000002)
Modifique SHGFI_ICON, fazendo com que a função recupere o ícone aberto do arquivo. Também usado para modificar SHGFI_SYSICONINDEX, fazendo com que a função retorne o identificador para a lista de imagens do sistema que contém o pequeno ícone aberto do arquivo. Um objeto de contêiner exibe um ícone aberto para indicar que o contêiner está aberto. O sinalizador SHGFI_ICON e/ou SHGFI_SYSICONINDEX também deve ser definido.
SHGFI_OVERLAYINDEX (0x000000040)
versão 5.0. Retorne o índice do ícone de sobreposição. O valor do índice de sobreposição é retornado nos oito bits superiores do iIcon membro da estrutura especificada por psfi. Esse sinalizador requer que a SHGFI_ICON também seja definida.
SHGFI_PIDL (0x000000008)
Indique que
SHGFI_SELECTED (0x000010000)
Modifique SHGFI_ICON, fazendo com que a função misture o ícone do arquivo com a cor de realce do sistema. O sinalizador SHGFI_ICON também deve ser definido.
SHGFI_SHELLICONSIZE (0x000000004)
Modifique SHGFI_ICON, fazendo com que a função recupere um ícone do tamanho do Shell. Se esse sinalizador não for especificado, a função dimensiona o ícone de acordo com os valores de métrica do sistema. O sinalizador SHGFI_ICON também deve ser definido.
SHGFI_SMALLICON (0x000000001)
Modifique SHGFI_ICON, fazendo com que a função recupere o ícone pequeno do arquivo. Também usado para modificar SHGFI_SYSICONINDEX, fazendo com que a função retorne o identificador para a lista de imagens do sistema que contém pequenas imagens de ícone. O sinalizador SHGFI_ICON e/ou SHGFI_SYSICONINDEX também deve ser definido.
SHGFI_SYSICONINDEX (0x000004000)
Recupere o índice de um ícone de lista de imagens do sistema. Se bem-sucedido, o índice será copiado para o iIcon membro do psfi. O valor retornado é um identificador para a lista de imagens do sistema. Somente as imagens cujos índices são copiados com êxito para iIcon são válidas. A tentativa de acessar outras imagens na lista de imagens do sistema resultará em um comportamento indefinido.
SHGFI_TYPENAME (0x000000400)
Recupere a cadeia de caracteres que descreve o tipo do arquivo. A cadeia de caracteres é copiada para o membro szTypeName
SHGFI_USEFILEATTRIBUTES (0x000000010)
Indica que a função não deve tentar acessar o arquivo especificado por pszPath. Em vez disso, ele deve agir como se o arquivo especificado por pszPath exista com os atributos de arquivo passados em dwFileAttributes. Esse sinalizador não pode ser combinado com os sinalizadores SHGFI_ATTRIBUTES, SHGFI_EXETYPEou SHGFI_PIDL.
Valor de retorno
Tipo: DWORD_PTR
Retorna um valor cujo significado depende do parâmetro
Se uFlags não contiver SHGFI_EXETYPE ou SHGFI_SYSICONINDEX, o valor retornado não será zero se tiver êxito ou zero de outra forma.
Se uFlags contiver o sinalizador SHGFI_EXETYPE, o valor retornado especificará o tipo do arquivo executável. Será um dos seguintes valores.
Código de retorno | Descrição |
---|---|
|
Arquivo inexecutável ou uma condição de erro. |
|
Aplicativo do Windows. |
|
arquivo MS-DOS .exe ou .com |
|
Aplicativo de console ou arquivo de .bat |
Observações
Você deve chamar essa função de um thread em segundo plano. Falha ao fazer isso pode fazer com que a interface do usuário pare de responder.
Se
Quando você usa o sinalizador SHGFI_EXETYPE com um aplicativo do Windows, a versão do Windows do executável é fornecida no HIWORD do valor retornado. Esta versão é retornada como um valor hexadecimal. Para obter detalhes sobre como equiparar esse valor com uma versão específica do Windows, consulte Usando os cabeçalhos do Windows.
Exemplos
O exemplo de código a seguir usa SHGetFileInfo para recuperar o nome de exibição da Lixeira, identificado por seu 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
O cabeçalho shellapi.h define SHGetFileInfo como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows 2000 Server [somente aplicativos da área de trabalho] |
da Plataforma de Destino |
Windows |
cabeçalho | shellapi.h |
biblioteca | Shell32.lib |
de DLL |
Shell32.dll (versão 4.0 ou posterior) |