Função DoEnvironmentSubstA (shellapi.h)
[Essa função é mantida apenas para compatibilidade com versões anteriores. Use ExpandEnvironmentStrings em vez disso.]
Analisa uma cadeia de caracteres de entrada que contém referências a uma ou mais variáveis de ambiente e as substitui por seus valores totalmente expandidos.
Sintaxe
DWORD DoEnvironmentSubstA(
[in, out] LPSTR pszSrc,
UINT cchSrc
);
Parâmetros
[in, out] pszSrc
Tipo: LPTSTR
Um ponteiro para uma cadeia de caracteres terminada em nulo que contém referências a uma ou mais variáveis de ambiente, cada uma no formulário a seguir. A diferenciação entre maiúsculas e minúsculas é ignorada.
%VariableName%
Qualquer caractere na cadeia de caracteres que não está entre caracteres '%' é ignorado e retornado inalterado. Portanto, se a cadeia de caracteres contiver várias variáveis de ambiente, você poderá usar qualquer caractere diferente de '%' como separador, incluindo espaços ou nenhum separador.
Quando essa função retorna com êxito, cada %VariableName% é substituído por seu valor expandido. As regras de substituição são as mesmas usadas pelo interpretador de comando. Se o nome da variável não for encontrado no sistema, %variableName% será deixado como foi enviado na entrada.
Se essa função falhar devido à cadeia de caracteres expandida ser muito grande para o buffer, o conteúdo desse buffer ficará inalterado.
cchSrc
Tipo: UINT
O tamanho, em caracteres, do buffer apontado por pszSrc. Observe que o buffer deve ser grande o suficiente para manter a cadeia de caracteres retornada.
Retornar valor
Tipo: DWORD
Se a cadeia de caracteres expandida se ajustar ao buffer, TRUE será retornado no HIWORD e o comprimento, em caracteres, do novo pszSrc será retornado no LOWORD.
Se a cadeia de caracteres expandida for muito grande para o buffer, FALSE será retornado em HIWORD e cchSrc no LOWORD.
Comentários
Os parâmetros devem conter valores válidos e não NULL . Você deve validar esses valores. A falha ao fazer isso pode fornecer resultados inesperados.
Como a cadeia de caracteres retornada em pszSrc normalmente será maior que a cadeia de caracteres de entrada, verifique se o buffer é grande o suficiente para manter a versão expandida da cadeia de caracteres. O tamanho alocado do buffer cchSrc para cadeias de caracteres ANSI deve ser um maior que o buffer de uma cadeia de caracteres Unicode. Ao lidar com cadeias de caracteres ANSI, use o tamanho do buffer de fórmula = comprimento da cadeia de caracteres + caractere nulo de terminação + 1 para determinar o tamanho mínimo correto do buffer.
Como as variáveis de ambiente podem ser adicionadas pelo usuário ou aplicativos, a lista completa depende do sistema. As variáveis de ambiente a seguir são padrão e estão disponíveis para aplicativos e serviços interativos.
- ALLUSERSPROFILE
- APPDATA
- COMPUTERNAME
- LOCALAPPDATA
- NUMBER_OF_PROCESSORS
- Sistema operacional
- PROCESSOR_ARCHITECTURE
- PROCESSOR_IDENTIFIER
- PROCESSOR_LEVEL
- PROCESSOR_REVISION
- ProgramData
- ProgramFiles
- PUBLIC
- SystemDrive
- SystemRoot
- USERPROFILE
- Windir
- HOMEDRIVE
- HOMEPATH
- LOGONSERVER
- USERDOMAIN
- USERNAME
Exemplos
O aplicativo de console a seguir demonstra o uso de DoEnvironmentSubstW.
#include "stdafx.h"
#include "windows.h"
#include "windef.h"
#include "shellapi.h"
int _tmain(int argc, _TCHAR* argv[])
{
WCHAR szSrc[MAX_PATH] = L"%OS%;%HOMEPATH%";
DWORD result = DoEnvironmentSubstW(szSrc, MAX_PATH);
WORD success = HIWORD(result);
WORD string_length = LOWORD(result);
return 0;
}
Observação
O cabeçalho shellapi.h define DoEnvironmentSubst como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante de pré-processador UNICODE. Misturar o uso do alias neutro de codificação com código que não seja neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Convenções para protótipos de função.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows XP [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte | Windows 2000 Server [somente aplicativos da área de trabalho] |
Plataforma de Destino | Windows |
Cabeçalho | shellapi.h |
Biblioteca | Shell32.lib |
DLL | Shell32.dll (versão 4.0 ou posterior) |