Capturando informações do Windows e do Hardware
Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito.
Veja como comprar e saiba mais sobre o material oferecido, clicando aqui.
Função Environ()
A função Environ(argumento) captura informações sobre o ambiente Windows, tais como: o nome do usuário, o nome do domínio e pastas relevantes.
A lista dos argumentos existentes é obtida do seguinte código:
Faça o login aqui para ter acesso ao código.
Veja na imagem, a lista gerada pelo código acima.
A lista completa está disponível no arquivo exemplo do artigo:
Exemplos de uso
Vamos supor que você queira acessar uma imagem armazenada na pasta TEMP do usuário. Para isso, bastará montar a linha da seguinte forma:
strPathImagem = environ("temp") & "\NomeImagem.gif"
E no caso de querer exibir na barra superior de um formulário, o nome do Computador e o nome do Usuário do Windows, bastará proceder desta forma:
strCaption = "Computador: " & environ("Computername")
strCaption = strCaption & " *** Usuário: " & environ("UserName")
Me.caption = strCaption
Usando o WMI
Com a programação WMI é possível acessar, configurar, gerenciar e monitorar a maioria dos recursos do Windows.
Com VBA e WMI são obtidos resultados que não são possíveis com as API's do Windows.
Nota: O WMI é muito poderoso e por isso você precisa ter bastante atenção para não danificar as configurações do Windows.
Aqui estão algumas das coisas que podemos fazer em computadores locais ou remotos, usando o VBA com o WMI :
• Gerenciar usuários e políticas de grupo;
• Ler e salvar os Log's de eventos para arquivos;
• Obter o tamanho de memória livre em um disco rígido;
• Obter a versão do Microsoft Office;
• Obter os atributos de impressoras;
• Obter a versão do sistema operacional Service Pack;
• Obter o nome do sistema operacional;
• Obter o número de versão do sistema operacional;
• Obter o número de compilação do sistema operacional;
• Obter número de série do Windows;
• Obter trabalhos agendados;
• Contar e listar processos de execução;
• Encerrar processos;
• Excluir, Instalar e Atualizar softwares;
• Listar todos os softwares instalados.
O WMI possui classes, propriedades, métodos e seu próprio dialeto de consulta de VBScript chamado WQL. O WMI usa o CIM (Common Information Model) para acessar informações e realizar ações. O CIM concede-nos acesso a quase tudo sobre um PC. Você pode aprender mais sobre CIM clicando aqui.
A seguir está um exemplo de código VBA usando o WMI. Este código obtém o endereço IP da máquina local.
Faça o login aqui para ter acesso ao código.
Observe que depois de declarar algumas variáveis, criamos uma instância de um objeto WMI, usando GetObject("winmgmts:").
strComputer = "." 'Acesso a máquina local Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & _
strComputer & "\root\cimv2")
Nós usamos winmgmts para acessar a raiz ("\root\cimv2″) da biblioteca CIM.
A variável strComputer com o valor "." , informa que estamos acessando o computador local. O acesso a computadores remotos não está incluído neste meu artigo.
Em seguida podemos instanciar, através de uma consulta, uma coleção de propriedades da classe Win32_NetworkAdapterConfiguration. Veja:
strSql = "Select * from Win32_NetworkAdapterConfiguration Where IPEnabled=TRUE"
Set IPConfigSet = objWMIService.ExecQuery(strSql)
Você pode aprender mais sobre WQL, a linguagem de consulta WMI, Aqui.
E finalmente varremos a classe instanciada (Win32_NetworkAdapterConfiguration), para obtermos o número do IP da placa de Rede.
Faça o login aqui para ter acesso ao código.
Fornecendo algumas funções úteis
Forneço algumas funções úteis usando o WMI, para você estudar e se familiarizar com a escrita.
Veja nesta imagem, o formulário frmQuadroWMI, com as funções oferecidas:
Baixe o arquivo exemplo
Bom estudo!
Os dez artigos mais visitados
MontaRibbons v.7.0 - Assistente completo para criar ribbons no Access
Vídeo - Controle personalizado de Acesso de Usuários
Vídeo - Aprenda sobre filtragens
Vídeo - Segurança máxima, usando o OPEN
Uma ajuda para quem está começando um negócio ou um projeto
Integrando o Access com Servidor MySQL - Introdução
Desabilitando a faixa(ribbon) superior do Access
Vídeo - Programação de relatórios - Parte 1
Como carregar o seu menu sem que ele vá para lista de suplementos
Vídeo - Criando Ribbons parte 1 - Conhecendo a estrutura Xml
14 comentário(s) aneves 02/06/2023 06:51:44 Caro Avelino Sampaio, De todos os úteis conteúdos/exemplos colocados ao nosso dispor, considero este último - News 2 - como o mais valioso dos que tenho recebido. Bem-haja e desejos de continuado sucesso. Juan Pablo 31/01/2022 10:46:59 Mestre Avelino, Por meio da função Environ é possível fazer o login no access usando os mesmos dados do login da rede windows? Humberto Galvani 04/01/2022 15:47:21 Gostaria de saber se existe alguma forma de maiplular as variaveis de Ambiente por exemplo a Username atraves de comandos de VBA? Gustavo 25/10/2021 12:31:30 Parabéns pelo artigo Avelino, me ajudou na função de backup do seu exemplo do Maestro, ele não estava reconhecendo o WinRar instalado no meu PC 64 bits e com o WinRar também 64 bits, a função original ele não reconhecia que ele estava instalado na pasta Program Files, somente reconhecia que tinha que estar na pasta Program Files (x86), utilizei a seguinte função: ElseIf Len(Dir(Environ("ProgramW6432") & "\WinRar\WinRAR.EXE") & "") > 0 Then strLocalWinRar = Environ("ProgramW6432") E ele reconheceu o WinRar corretamente. Obrigado e parabéns mais uma vez pelo seu trabalho. LEANDRA - RJ 21/08/2021 15:49:09 Parabéns pela organização e disponibilização de códigos tão úteis! LEANDRA - RJ 21/08/2021 15:41:04 Ha muito tempo procurava uma função que retornasse o IP dentro do Access. Sua solução é 10!! Avelino Sampaio 09/04/2021 10:40:26 Obrigado pela participação de todos! Marcelo-Pr, o que acontece ao abri o formulário frmQuadroWMI ? No aguardo Leozito Pedroso de Almeida 08/04/2021 20:06:12 muito bom excelente.... Marcelo-PR 08/04/2021 09:30:59 Só não consegui a "lista" - como faço? Mas pelo que vi é um código matador para o que se propõe. Marcelo David 07/04/2021 00:56:13 Simplemente fantástico! Parabéns amigão! Valdino 06/04/2021 16:08:34 Bem elaborado. Vale lembrar que as opções disponibilizadas na lista do Environ pode mudar entre as versões do SO e do Office, bem como entre um programa e outro da mesma versão do Office. A dias atrás elaborei um aplicativo para comparação entre as versões do Office nas diferentes versões do Windows e entre os aplicativos de mesma versão do Office. A lista pode variar entre 25 a 37 itens. Nesse aplicativo tambem utilizo WMI para retornar dados referentes aos SOs utilizados na pesquisa. Eduardo Rubio 06/04/2021 15:03:54 muito bom mesmo... sempre muito util... obrigado Márcio Melo -RJ 06/04/2021 13:50:03 Nossa, verifiquei o seu exemplo, tem muito mais informações, traz tudo detalhado. Nunca que imaginei que o VBA dava para fazer tudo isso, até me animo em voltar a tentar ir mais afundo nessa parte que vem de fora do ambiente. Você saberia me dizer se podemos também manipular as funções das OCX por exemplo a MSCOMM32.OCX que tem a finalidade de comunicar pela porta COM, já consegui fazer alguns testes em PC que tinha o C++ studio instalado, quando levei a outros PC´s mesmo registrando a OCX não funcionava, como que tivesse que registrar direitos o detalhe que o C++ do meu trabalho é legalizado, mais faltou algum procedimento para essa OCX saber disso. Gostei muito dessa postagem! me faz sonhar além das minhas expectativas... Sou mais Brasil! Guilherme B. Pereira 06/04/2021 13:25:06 Mestre carioca Avelino! FANTÁSTICO!!!!!!!!!!!!!!!!!!! Sem palavras para definir o tão útil, é o exemplo em questão, dentre outras dezenas de igual capricho que você disponibiliza para a comunidade. Meu forte e cordial abraço, Gillherme |