Vídeo recomendado
https://youtu.be/diWPPPhW-9E

RESOLVIDO - Listar os programas em execução no windows

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
danielfi
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Ter Fev 19, 2019 3:25 pm

RESOLVIDO - Listar os programas em execução no windows

Mensagem por danielfi »

Boa tarde pessoal,

por acaso vocês sabe de um código que mostra todos os programas que estão rodando no windows (em processamento) e também qual esta com o FOCO?

eu achei o código abaixo, mas preciso ficar informando o nome do programa para ele verificar se esta aberto ou não.

Código: Selecionar todos

Private Declare PtrSafe Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As String) As Long

Sub teste()
Dim ProgramaAberto As Long

   ProgramaAberto = FindWindow(0, "UOL - O melhor conteúdo - Internet Explorer")
   If ProgramaAberto <> 0 Then
       MsgBox "programa esta ligado"
       End
   Else
       MsgBox "O programa n esta ligado"
   End If
End Sub
Esse código até funciona bem se eu souber todos os programas que eu quero monitorar. No internet Explorer eu consigo identificar cada uma das paginas abertas, mas no google ele só exibe a pagina que esta com o FOCO, as outras ele aparece como fechado. alguém tem uma ideia para resolver isso também.

O objetivo desse programa é monitorar os programas e sites abertos em uma central de atendimento.

Desde ja agradeço a atenção e ajuda de todos.
Editado pela última vez por danielfi em Qui Mar 07, 2019 10:56 am, em um total de 1 vez.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: Listar os programas em execução no windows

Mensagem por webmaster »

danielfi,

Esse é um baita desafio. Você encontrará muitas respostas na biblioteca WMI. O VBA não é muito adequado para seu uso, mas é possível. Aqui vai um exemplo dele fazendo a listagem dos processos da máquina:

Código: Selecionar todos

Sub TaskManager()
    Dim oServ As Object
    Dim cProc As Variant
    Dim oProc As Object

    Set oServ = GetObject("winmgmts:")
    Set cProc = oServ.ExecQuery("Select * from Win32_Process")

    For Each oProc In cProc
        Debug.Print oProc.Name
    Next
End Sub
A variável oProc é do tipo SWbemObjectEx que tem uma lista generosa de propriedades e métodos a explorar.

Boa sorte!


danielfi
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Ter Fev 19, 2019 3:25 pm

Re: Listar os programas em execução no windows

Mensagem por danielfi »

Muito obrigado pela ajuda,

eu também procurei e achei o código a baixo que funciona muito bem

Código: Selecionar todos

Sub teste1()

    Dim strComputer As String
    strComputer = "."

    Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process", , 48)

    Dim row As Integer
    row = 1
    For Each objItem In colItems
         ActiveSheet.Cells(row, 1).Value = objItem.ProcessId
         ActiveSheet.Cells(row, 2).Value = objItem.Name
         ActiveSheet.Cells(row, 3).Value = objItem.Caption
         ActiveSheet.Cells(row, 4).Value = objItem.CommandLine
         ActiveSheet.Cells(row, 5).Value = objItem.ExecutablePath
        
         row = row + 1
    Next
    
End Sub
Editado pela última vez por danielfi em Qui Mar 07, 2019 11:19 am, em um total de 1 vez.


danielfi
Acabou de chegar
Acabou de chegar
Mensagens: 4
Registrado em: Ter Fev 19, 2019 3:25 pm

Re: RESOLVIDO - Listar os programas em execução no windows

Mensagem por danielfi »

para quem tiver curiosidade de mexer com isso, segue um link bem legal:
Site

A API do Windows Management Instrumentation (WMI) expõe uma grande quantidade de informações sobre PCs, incluindo PCs e servidores remotos. Ele pretende ser um meio de “automatizar tarefas administrativas em computadores remotos”. Aqui está uma pequena lista de coisas que o WMI pode fazer.
- Inicie um processo em um computador remoto.
- Programe um processo para ser executado em horários específicos em dias específicos.
- Reinicialize um computador remotamente.
- Consultar os logs de eventos do Windows em um computador local ou remoto.
- Obter uma lista de computadores locais ou remotos de:
- Aplicações
- Componentes de hardware
- Unidades de disco, capacidades e espaço livre
- Usuários locais e de domínio
- Impressoras e configurações de impressora
- Configurações de rede
- Com o VBA, o Excel pode acessar o WMI e se tornar uma ferramenta poderosa para técnicos de PC, administradores de rede e auditores de sistema

Quer um vislumbre?
Aqui está uma pequena rotina para listar a configuração do adaptador de rede do seu PC. Carregue em um módulo. Executá-lo. Agora considere isto é apenas olhando para o adaptador de rede. O WMI pode fazer muito mais do que isso (assustador).

Código: Selecionar todos

Sub WMI()
 
    Dim oWMISrvEx       As Object   'SWbemServicesEx
    Dim oWMIObjSet      As Object   'SWbemServicesObjectSet
    Dim oWMIObjEx       As Object   'SWbemObjectEx
    Dim oWMIProp        As Object   'SWbemProperty
    Dim sWQL            As String   'WQL Statement
    Dim n               As Long     'Generic Counter
 
    sWQL = "Select * From Win32_NetworkAdapterConfiguration"
    Set oWMISrvEx = GetObject("winmgmts:root/CIMV2")
    Set oWMIObjSet = oWMISrvEx.ExecQuery(sWQL)
    For Each oWMIObjEx In oWMIObjSet
        'Put a STOP here then View > Locals Window to see all properties
        If Not IsNull(oWMIObjEx.IPAddress) Then
            Debug.Print "IP:"; oWMIObjEx.IPAddress(0)
            Debug.Print "Host name:"; oWMIObjEx.DNSHostName
            For Each oWMIProp In oWMIObjEx.Properties_
                If IsArray(oWMIProp.Value) Then
                    For n = LBound(oWMIProp.Value) To UBound(oWMIProp.Value)
                        Debug.Print oWMIProp.Name & "(" & n & ")", oWMIProp.Value(n)
                    Next
                Else
                    Debug.Print oWMIProp.Name, oWMIProp.Value
                End If
            Next
        End If
    Next
 
End Sub

Quer ver mais?
Aqui está uma pasta de trabalho que facilita a exploração de centenas de classes contendo informações sobre nossa CPU, unidades de disco, memória, sistema operacional, aplicativos, usuários e muito, muito mais. E também pode consultar PCs e servidores remotos, desde que você tenha as credenciais.

WMI Query.xlsm: https://www.dropbox.com/s/908851y0esoqt ... .xlsm?dl=1

Usos para o WMI Query.xlsm
Inventário de todos os PCs em uma rede, incluindo todo o hardware e software usando:
Win32_SystemEnclosure - fabricante do PC e número de série
Win32_LogicalDisk - Discos com capacidades e espaço livre.
Win32_Processor - especificações de CPU
Win32_PhysicalMemoryArray - RAM / tamanho da memória instalada
Win32_VideoController - adaptador gráfico e configurações
Win32_OnBoardDevice - Dispositivos da placa-mãe
Win32_OperatingSystem - Qual versão do Windows com o número de série
WIn32_Printer - impressoras instaladas
Win32_Product - Software Instalado
WIn32_Account - Lista todas as contas de usuários em um PC ou domínio
Win32_ComputerSystem - Veja quem está usando atualmente um PC remoto (também Win32_LoggedOnUser )
Win32_BaseService - Lista serviços em execução (ou parados) em qualquer PC, juntamente com o caminho e o nome do arquivo do serviço.
E centenas mais!
Leia as referências abaixo para saber mais sobre o que essa API pode fornecer.

Apresentações e Primers :
Introdução ao Scripting: http://technet.microsoft.com/pt-br/scri ... 40112.aspx
Sesame Script: http://technet.microsoft.com/pt-br/libr ... 76991.aspx
WMI Introdução: http://msdn.microsoft.com/en-us/library ... s.85).aspx
Scripting de scripts ADSI: http://technet.microsoft.com/library/ee156524.aspx
Scripting Guys: http://blogs.technet.com/b/heyscripting ... in-active- directory.aspx

Referências :
WMI Scripting Primer: http://technet.microsoft.com/library/ee156560.aspx
Introdução ao WMI: http://msdn.microsoft.com/pt-br/library ... s.85).aspx
Referência do WMI: http://msdn.microsoft.com/en-us/library ... s.85).aspx
Classes do WMI Win32: http://msdn.microsoft.com/en-us/library/aa394084 (v = vs.85) .aspx
Objetos da API de script WMI: http://msdn.microsoft.com/en-us/library ... s.85).aspx
Método WMI ExecQuery: http: // msdn. microsoft.com/en-us/library/aa393866(v=vs.85).aspx
Propriedades da classe WMI NetworkAdapterConfiguration http://msdn.microsoft.com/pt-br/library ... s.85).aspx

Exemplos de script : exemplos de
Dan Elgaard: http://www.excelgaard.dk/Lib/USERINFO/
Exemplos de script do WMI: http://msdn.microsoft.com/en-us/library ... 5(v=vs.85). aspx
Consulta do WMI por exemplo: http://www.codeproject.com/Articles/463 ... by-Example
Galeria Technet: http://gallery.technet.microsoft.com/sc ... -36eb-4979 -baf1-432e53c43f93
Diretório Ativo: http://www.billrowell.com/2009/09/10/pr ... er-object/


NOTA! Veja o que os outros estão dizendo sobre isso.
De: http://www.makeuseof.com/tag/see-pc-inf ... ba-script/
Construindo seus módulos WMI
A inspiração para esse código vem de um recurso fantástico do Google Sites chamado Além do Excel . O exemplo mostrado há uma sub-rotina chamada WMI (), que passa todas as informações de rede do seu computador para a área de depuração do ambiente de programação do Excel.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Adelson
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Qui Mar 07, 2019 12:36 pm

Re: RESOLVIDO - Listar os programas em execução no windows

Mensagem por Adelson »

Tive uma necessidade parecida e resolvi combinando o uso de algumas Windows API (uma delas, essas do exemplo)


Avatar do usuário
webmaster
Administrador
Mensagens: 3114
Registrado em: Sex Jul 24, 2009 2:44 pm
Contato:

Re: RESOLVIDO - Listar os programas em execução no windows

Mensagem por webmaster »

Que discussão linda! Adelson, ainda tem o exemplo disponível?


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder