No vídeo de hoje vamos demonstrar em como posicionar em coordenadas (x e y) e efetuar o clique do mouse via programação.
A dúvida de hoje foi feita por alguns alunos, sendo que perguntaram da possibilidade de criar uma tela para os usuários e efetuar cliques do mouse de modo automático.
Então montamos um exemplo com uma dialog e um navegador embutido para executarmos os comandos.
E abaixo o código fonte desenvolvido para exemplificar:
//Bibliotecas
#Include "Totvs.ch"
#Include "TopConn.ch"
/*/{Protheus.doc} User Function zVid0063
Exemplo de TWebEngine e TWebChannel com posicionamento do mouse
@type Function
@author Atilio
@since 31/08/2022
/*/
User Function zVid0063()
Local cUrl := ""
//Tamanho da janela
Private aTamanho := MsAdvSize()
Private nJanLarg := aTamanho[5]
Private nJanAltu := aTamanho[6]
//Navegador Internet
Private oWebChannel
Private nPort
Private oWebEngine
Private aComandos := {}
//Defina a URL e os comandos que vão ser executados
cUrl := "https://terminaldeinformacao.com"
aAdd(aComandos, 'document.getElementById("wrapper").style.background = "#ffeaea"; ')
aAdd(aComandos, 'document.getElementsByClassName("search")[1].value = "teste"; ')
//Cria a dialog
DEFINE DIALOG oDlg TITLE "Exemplo de navegação (aperte F4 para executar os comandos)" FROM 000,000 TO nJanAltu,nJanLarg PIXEL
// Prepara o conector WebSocket
oWebChannel := TWebChannel():New()
nPort := oWebChannel::connect()
// Cria componente
oWebEngine := TWebEngine():New(oDlg, 0, 0, 100, 100,, nPort)
oWebEngine:navigate(cUrl)
oWebEngine:Align := CONTROL_ALIGN_ALLCLIENT
//Adiciona o atalho no F4
SetKey(VK_F4, {|| fRodaScript()})
ACTIVATE DIALOG oDlg CENTERED
Return
Static Function fRodaScript()
Local nAtual := 0
Local cPastaLoc := GetTempPath()
Local cPastaSrv := "\x_temp\"
Local cPrograma := "mouse.exe"
//Agora exemplifica em como clicar num componente
// O script tem que ser baixado como .bat e após executar, ele irá gerar um .exe
// Download: https://github.com/npocmaka/batch.scripts/blob/master/hybrids/.net/c/mouse.bat
// Após isso, coloque o arquivo mouse.exe dentro da Protheus data, na pasta \x_temp\
//Se o arquivo existir no servidor
If File(cPastaSrv + cPrograma)
//Copia do Servidor para a pasta local
__CopyFile(cPastaSrv + cPrograma, cPastaLoc + cPrograma)
//Posiciono o cursor do mouse no botão Pesquisar do cabeçalho do site (coluna x linha)
WinExec(cPastaLoc + "mouse moveTo 1290x153")
//Efetuo o clique
WinExec(cPastaLoc + "mouse click")
//Percorre os comandos e executa
For nAtual := 1 To Len(aComandos)
oWebEngine:runJavaScript(aComandos[nAtual])
Next
EndIf
Return
Bom pessoal, por hoje é só.
Abraços e até a próxima.