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

Manipulação de Janelas do Windows com VBA

Dicas dos mais variados tipos, necessidades, angústias, enfim
Raygsson
Manda bem
Manda bem
Mensagens: 118
Registrado em: Sex Jan 31, 2020 8:06 pm

Manipulação de Janelas do Windows com VBA

Mensagem por Raygsson »

Venho compartilhar com vocês um conhecimento precioso.
No código abaixo estou usando algumas APIs do Windows para manipular as janelas/avisos abertos.
Sabe aquela tela de confirmação perguntando Sim ou Não que você precisa clicar com VBA? ou ainda OK/Salvar/Cancelar/etc, o que precisar de click ou apenas fechar.
Só quem já fez alguma automação e travou nessas telas sabe como é importante saber mexer com isso 🤣

Código: Selecionar todos

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Public Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hWnd As Long, ByVal lpString As String, ByVal cch As Long) As Long
Public Declare Function FindWindowExW Lib "user32" (ByVal hWndParent As LongPtr, Optional ByVal hwndChildAfter As LongPtr, Optional ByVal lpszClass As LongPtr, Optional ByVal lpszWindow As LongPtr) As LongPtr

Public Function IdBotão(JanelaMãe, Texto)
Dim TextoAPI As String * 255
ElementoFilho = FindWindowExW(JanelaMãe)
Do While ElementoFilho <> 0
    TextoElemento = Left$(TextoAPI, GetWindowText(ElementoFilho, ByVal TextoAPI, 255))
    If TextoElemento Like "*" & Texto & "*" Then
       IdBotão = ElementoFilho
       Exit Function
    End If
  ElementoFilho = FindWindowExW(JanelaMãe, ElementoFilho)
Loop
End Function

Sub ManipulandoJanelas()

'COMANDOS BÁSICOS
CLICAR = "&HF5"
FECHAR = "&H10"

'LOCALIZA A JANELA PELO TITULO
Janela = FindWindow(vbNullString, "Excluir Arquivo")

'PODERIA FECHAR A JANELA COM ESSE COMANDO:
'SendMessage Janela, FECHAR, 0&, 0&

'LOCALIZA BOTÃO PELO TEXTO
Botão = IdBotão(Janela, "Sim")

'ENVIA O COMANDO P/ O BOTÃO
SendMessage Botão, CLICAR, 0&, 0&

End Sub


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: Manipulação de Janelas do Windows com VBA

Mensagem por webmaster »

Nice!

Cria um gist disso para compartilhar com a comunidade.


Juan Fernandes Silva
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Ter Out 12, 2021 3:25 pm

Re: Manipulação de Janelas do Windows com VBA

Mensagem por Juan Fernandes Silva »

Estou tentando fazer uma automação com o ie ( internet explorer ) logo quando o vb clica no primeiro botão aparece uma mensagem assim:

a página da web que você está visitando está tentando fechar a janela.deseja fechar a janela?

nesse script não funcionou, tive que fazer alguma alterações pois na maquina o user é de 64 bites

poderia me ajudar a construir um novo?
Anexos
janela explorer.PNG
janela explorer.PNG (13.76 KiB) Exibido 4025 vezes


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