Gestion d'une fenêtre POP-UP Topic is solved

Poser vos questions de programmation en AutoHotkey
QuestVBA
Posts: 14
Joined: 21 Nov 2019, 05:05

Gestion d'une fenêtre POP-UP

21 Nov 2019, 06:34

Bonjour au Forum,
Je suis un petit nouveau et je découvre AutoHotKey qui me rend déjà de grands services. Toutefois, j'ai un petit soucis. J'utilise ces lignes de code pour ouvrir deux applications dans IE :

Code: Select all

navOpenInBackgroundTab = 4096
navOpenInNewWindow = 1

#F1::
wb := ComObjCreate("InternetExplorer.Application") ; create a IE instance
IeHwnd := wb.Hwnd
wb.Visible := True
wb.Navigate("http ------- /pages/index.xhtml")  Broken Link for safety
While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load
   Sleep, 10
; Msgbox Done!
  
wb.Navigate("https ------- /#!/",  Broken Link for safety navOpenInNewWindow)
while !wb2
	wb2 := New_IE("https ------- /#!/")  Broken Link for safety

While wb2.readyState != 4 || wb2.document.readyState != "complete" || wb2.busy ; wait for the page to load
   Sleep, 10
Send, {TAB}{TAB}{TAB}{TAB}{TAB}{TAB}-------{TAB}-------{TAB}{ENTER}
While wb2.readyState != 4 || wb2.document.readyState != "complete" || wb2.busy ; wait for the page to load
   Sleep, 10
Msgbox Done!

return

New_IE(Url) {
	For wb in ComObjCreate("Shell.Application").Windows
	{
		If instr( wb.LocationUrl, URL) && InStr( wb.FullName, "iexplore.exe" )
			return wb
		else
			continue
	}
}
Mais j'ai un soucis pour encoder mon Nom d'utilisateur et mon Mot de passe dans le POPUP qui s'ouvre avec la première fenêtre IE.
Pouvez-vous me mettre sur la piste ou m'indiquer où je me trompe. Peut-être que je dois utiliser un autre code plus simple ou plus complexe.
Pour information, j'utilise la version portable.

NB : j'ai essayé de télécharger une photo du popup mais elle est bloquée.
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Gestion d'une fenêtre POP-UP

21 Nov 2019, 15:43

Peut être une photo avec un cellulaire? :( :think:
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
QuestVBA
Posts: 14
Joined: 21 Nov 2019, 05:05

Re: Gestion d'une fenêtre POP-UP

25 Nov 2019, 02:12

Je veux mettre un Printscreen de Google Photo et j'ai en retour : Broken Link for safety.
Vous pouvez me guider pour la procédure ?
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Gestion d'une fenêtre POP-UP

25 Nov 2019, 10:13

Errrr le lien a été brisée par les mesures "anti-pourriel": "Broken Link for safety"
Essayes peut-être avec imgur, mais modifie le lien en mettant des {} autour des points? ex: imgur{.}com/imfds73ft
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
gregster
Posts: 8916
Joined: 30 Sep 2013, 06:48

Re: Gestion d'une fenêtre POP-UP

25 Nov 2019, 12:21

Il est possible de télécharger les photos par l'éditeur du forum: Post reply > Attachments > Add files > (Place inline)
QuestVBA
Posts: 14
Joined: 21 Nov 2019, 05:05

Re: Gestion d'une fenêtre POP-UP

26 Nov 2019, 01:34

Un grand merci pour le coup de main pour insérer l'image. En fait, c'est bête quand on regarde au bon endroit.

Donc, avec ce début de code, la fenêtre IE s'ouvre bien mais direcement, j'ai un pop-up. Et c'est dans celui-ci que je n'arrive pas à naviguer. Quand je le fais manuellement, c'est simple : la zone Nom d'utilisateur est directement activée et je dois encoder mon numéro, un TAb pour le Mot de passe et ensuite, ENTER. Sauf qu'en automatique, l'encodage va se balader autre part.

Code: Select all

navOpenInBackgroundTab = 4096
navOpenInNewWindow = 1

#F1::
wb := ComObjCreate("InternetExplorer.Application") ; create a IE instance
IeHwnd := wb.Hwnd
wb.Visible := True
wb.Navigate("http ------- /pages/index.xhtml")  Broken Link for safety
While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load
   Sleep, 10
; Msgbox Done!
Image 1.png
Image 1.png (60.79 KiB) Viewed 7323 times
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Gestion d'une fenêtre POP-UP

26 Nov 2019, 11:31

Ahhhh je vois, c'est une fenêtre de "HTTP Basic access authentication".
D'apres la page wikipedia, on peut le faire directement avec le lien:
https://Username:[email protected]/index.html

Sinon, utilise le WindowSpy pour déterminer le nom des champs à remplir. :thumbup:
Par exemple, faudra modifier le suivant:

Code: Select all

#IfWinActive Connect to page ahk_class #32770
^!q::
ControlSetText, edit2, username,A
ControlSetText, edit3, password,A
ControlClick, button3,A
Return
#IfWinActive
Source (HotKeyIt): https://autohotkey.com/board/topic/41884-userpass-authentication-pop-up/

Sinon, il y a d'autres méthodes comme par exemple via "COM WinHttp.WinHttpRequest.5.1":
https://www.autohotkey.com/boards/viewtopic.php?t=49478
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
QuestVBA
Posts: 14
Joined: 21 Nov 2019, 05:05

Re: Gestion d'une fenêtre POP-UP

27 Nov 2019, 02:01

Le retour ...

J'ai essayé de la faire directement avec le lien mais cela ne fonctionne pas dans IE.
https Username:[email protected] /index.html
Par contre, cela semble fonctionner dans FireFox que je ne suis pas sensé utiliser.

Avec WindowSpy, j'ai les deux codes mais ... je ne vois pas quel code utiliser. J'ai l'impression que la détection ne soit pas possible jusqu'au bout.
Image 5.png
Image 5.png (123.58 KiB) Viewed 7268 times
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Gestion d'une fenêtre POP-UP

27 Nov 2019, 11:34

ahh okok, j’ai deux solution on tête. pas trop trop élégant mais ça devrait fonctionner. Sois on fait une approximation proportionnelle ou on utilise imagesearch pour déterminer ou on va clicker pour activer les contrôles.
attends, attends...
Finalement, je me suis aperçu que quand on click n’importe ou sur la fenêtre, le champs username est auto-sélectionné. :thumbup:

Voici un exemple avec Ctrl + Alt + q

Code: Select all

CoordMode, Mouse, Client
#IfWinExist ahk_class Credential Dialog Xaml Host
^!q::
WinActivate, ahk_class Credential Dialog Xaml Host
sleep 100
MouseClick, Left, 10, 10
Send Username{Tab}
sleep 100
Send Password{Enter}
Return
#IfWinExist
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
QuestVBA
Posts: 14
Joined: 21 Nov 2019, 05:05

Re: Gestion d'une fenêtre POP-UP

28 Nov 2019, 04:39

Bonjour joedf,
Merci pour toutes tes propositions.
Étant donné que je ne suis pas vraiment un spécialiste voici ce que j'ai fait.

Code: Select all

navOpenInBackgroundTab = 4096
navOpenInNewWindow = 1

#F1::
wb := ComObjCreate("InternetExplorer.Application") ; create a IE instance
IeHwnd := wb.Hwnd
wb.Visible := True
wb.Navigate("http lpxbrapp001a.cloud.famifed.be:7200 /itinera/pages/index.xhtml")  Broken Link for safety
While wb.readyState != 4 || wb.document.readyState != "complete" || wb.busy ; wait for the page to load
   Sleep, 10
Msgbox Done!
  
wb.Navigate("https appprod.rkw-onafts.fgov.be /Trivia/#!/",  Broken Link for safety navOpenInNewWindow)
while !wb2
	wb2 := New_IE("https appprod.rkw-onafts.fgov.be /Trivia/#!/")  Broken Link for safety

While wb2.readyState != 4 || wb2.document.readyState != "complete" || wb2.busy ; wait for the page to load
   Sleep, 10
Send, {TAB}{TAB}{TAB}{TAB}{TAB}{TAB}USER{TAB}MOTDEPASSE{TAB}{ENTER}
While wb2.readyState != 4 || wb2.document.readyState != "complete" || wb2.busy ; wait for the page to load
   Sleep, 10
Msgbox Done!

return
New_IE(Url) {
	For wb in ComObjCreate("Shell.Application").Windows
	{
		If instr( wb.LocationUrl, URL) && InStr( wb.FullName, "iexplore.exe" )
			return wb
		else
			continue
	}
}

CoordMode, Mouse, Client
#IfWinExist ahk_class Credential Dialog Xaml Host
^!q::
WinActivate, ahk_class Credential Dialog Xaml Host
sleep 100
MouseClick, Left, 10, 10
Send USER{Tab}
sleep 100
Send MOTDEPASSE{Enter}
Return
#IfWinExist
Évidemment, j'ai plusieurs questions :
Pour le moment, le raccourci m'ouvre la première application et s'arrête sur le pop-up. Avec ton code, j'appuie sur CTRL ATL Q et cela charge la page et passe ensuite à la seconde étape. Cela semble nickel
Questions :
  • Est-il possible d'automatiser le MDP sans passer par le 'second' raccourci ?
  • Parfois, pour le second code,le 1er ou les 2 premiers caractères sont manquants. Comme s'ils se perdaient dans la nature. Il faudrait un plus long sleep ?
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Gestion d'une fenêtre POP-UP  Topic is solved

28 Nov 2019, 10:03

Je pense qu'on peut remplacer le code avec un Label qu'on appellera lorsque la fenêtre est détectée. Je pense aussi peut-être un plus long sleep serait mieux.

Code: Select all

LoginHttpAuth:
	IfWinNotExist, ahk_class Credential Dialog Xaml Host
		return
	Settimer, LoginHttpAuth, Off
	CoordMode, Mouse, Client
	WinActivate, ahk_class Credential Dialog Xaml Host
	sleep 200
	MouseClick, Left, 10, 10
	Send USER{Tab}
	sleep 200
	Send MOTDEPASSE{Enter}
Return
Je pense qu'on utiliser un timer pour détecter la fenêtre (mettre au début du script):

Code: Select all

Settimer, LoginHttpAuth, 100
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
QuestVBA
Posts: 14
Joined: 21 Nov 2019, 05:05

Re: Gestion d'une fenêtre POP-UP

28 Nov 2019, 12:21

Un grand :bravo: à joedf.
C'est super cool car j'ai appris plein de petits trucs.Et il y en a encore à apprendre. :crazy:

Dernière question (pour l'instant) : je voudrais mettre mon mot de passe dans une variable (cela c'est facile) mais je voudrais le mettre en CHR(). Comment doit-on faire pour lier plusieurs CHR(). J'ai essayé , + & ... Je ne trouve pas pour l'instant et je ne trouve pas la bonne requête sur internet.
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Gestion d'une fenêtre POP-UP

28 Nov 2019, 14:23

J'imagine que c'est pour ne pas explicitement montrer ton mot de passe? :think:

Voici un exemple for encoder / décoder du text ASCII en valeurs décimales et vice-versa. :thumbup:

Code: Select all

original := "Mon mot de passe!"

encoded := ascString(original)
decoded := chrString(encoded)

MsgBox Original = %original%`nEncoded = %encoded%`nDecoded = %decoded%

ExitApp

AscString(str, delim="|") {
	ret := ""
	Loop, Parse, str
	{
		ret .= Asc(A_LoopField) delim
	}
	return Trim(ret,delim)
}

chrString(str, delim="|") {
	ret := ""
	Loop, Parse, str, % delim
	{
		ret .= Chr(A_LoopField)
	}
	return ret
}
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]
QuestVBA
Posts: 14
Joined: 21 Nov 2019, 05:05

Re: Gestion d'une fenêtre POP-UP

10 Dec 2019, 01:52

salut, joedf.
Non je n'ai pas oublié.
Voilà, j'ai effectué quelques adaptations de mon code pour effectivement (tu l'as deviné) cacher un peu mon MDP. Du coup de passe par un fichier TXT dont je lis certaines lignes pour recombiner le tout. J'utilise cette méthode de lecture :

Code: Select all

FileReadLine, line_1, C:\Programmes portables\AutoHotkeyPortable\AutoHotkey Script\XXXXX.txt, 584
Certaines données sont lisibles d'autres sont codées...
En tout cas, cela fonctionne très bien !
User avatar
joedf
Posts: 8940
Joined: 29 Sep 2013, 17:08
Location: Canada
Contact:

Re: Gestion d'une fenêtre POP-UP

10 Dec 2019, 10:14

Ahh okok, cool! :+1:
Image Image Image Image Image
Windows 10 x64 Professional, Intel i5-8500, NVIDIA GTX 1060 6GB, 2x16GB Kingston FURY Beast - DDR4 3200 MHz | [About Me] | [About the AHK Foundation] | [Courses on AutoHotkey]
[ASPDM - StdLib Distribution] | [Qonsole - Quake-like console emulator] | [LibCon - Autohotkey Console Library]

Return to “J'ai besoin d'aide”

Who is online

Users browsing this forum: No registered users and 18 guests