SendMessage para Control(INPUT) em Internet Explorer_server

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

manbat42
Posts: 22
Joined: 04 Nov 2017, 11:25

SendMessage para Control(INPUT) em Internet Explorer_server

09 Sep 2020, 15:08

Tenho uma aplicação que apresenta campos para preencher.
Ao utilizar o WinSpy ou o IE HTML Element Spy verifico que o hwnd é sempre o mesmo para todos os controles dentro da página ou seja é o hwnd do Internet Explorer_Server1.
O código que estou a usar é:

Code: Select all

#NoEnv
;#Warn
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance off
SetTitleMatchMode, 2
SetBatchLines -1

caminho := A_ScriptDir

pwb := ComObjCreate( "InternetExplorer.Application" ) ;Creates the ComObj
pwb.Navigate("http://sicat.jtcontencioso.ritta.local/documentosGPS/pesquisaDocumentos.htm")
pwb.Visible := True ; Shows the IE app

janela := "Pesquisa de Documentos"
WinWait, %janela%, 
IfWinNotActive, %janela%, , WinActivate, %janela%, 
WinWaitActive, %janela%, 
sleep 100

CodJan := WinExist()

pwb := pwb_Get("Pesquisa de Documentos")

controle := pwb.document.getElementByID("numeroFiscal")
sleep 10
escolha := pwb.document.getElementByID("situacaoSelected")
sleep 10

DetectHiddenWindows, On
CB_SETCURSEL := "0x014E" ;Selecciona item de Combo-Box
WM_SETTEXT := "0x000c" ;Envia texto para controle
   
pwb.document.getElementByID("numeroFiscal").focus()
sleep 100
ControlGet, hwnd_controle, hwnd,, %controle%, ahk_id %CodJan%
sleep 100
ControlGetFocus, hwnd_controle, ahk_id %CodJan%
sleep 100
MsgBox % "hwnd_controle: " hwnd_controle ;Apresenta o hwnd do Internet Explorer_Server1
sleep 100
Texto := "123456789"  ;Text for the control
sleep 100
SendMessage, WM_SETTEXT, , &Texto, %controle%, ahk_id %CodJan%
sleep 100

pwb.document.getElementByID("situacaoSelected").focus()
sleep 100
ControlGet, hwnd_escolha, hwnd,, %escolha%, ahk_id %CodJan%
sleep 100
MsgBox % "hwnd_escolha: " hwnd_escolha ;Apresenta o hwnd do Internet Explorer_Server1
sleep 100
SendMessage, CB_SETCURSEL, 3, %escolha% , ahk_id %CodJan%
sleep 100
escolha.onChange()

ExitApp
Não coloquei a função pwb_Get() por não ser construída por mim e estar disponível em vários sítios da internet.
O campo INPUT não preenche e não é seleccionado nenhum item da ComboBox. O comando SendMessage não faz nada.
Onde está o erro?
Como se acede ao hwnd dos controles embeded em um Internet Explorer_Server1? com o Winspector Spy eu não consigo.
A aplicação WinSpy não lê os controles. Somente selecciona o Internet Explorer_Server1e nenhum dos elementos dentro dele.
Anexo uma imagem da página e do código.
Antecipadamente grato
Attachments
Página de trabalho.pdf
prtSc da página em causa.
(107.12 KiB) Downloaded 6 times

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 3 guests