Page 1 sur 2

[R] Question handle et window

Posté : jeu. 04 déc. 2014 09:29
par DimVar
Bonjour,

Dans l'attente d'une réponse sur ce sujet, je teste des fonctions sur les handle window et autres.
J'ai donc tenté de récupérer un handle ou une class d'une fenetre ouverte : Firefox.

Code : Tout sélectionner


#include <Array.au3>

$aWinList=WinList()
_ArrayDisplay($aWinList)

$h=WinGetClassList ("0x000E0018")
MsgBox (0,@error,$h)

 
Je liste les fenetres avec Winlist, je les display avec arraydisplay. Je recupere visuellement le handle d'un onglet firefox, et le mets à la main dans wingetclasslist.
Ceci dans le but de recuperer la class de firefox, pour pouvoir m'en servir par la suite comme parametre à d'uatre fonctions (puisque le param TITLE ne fonctionne pas toujours).
Et paf, $h est vide...
Qu'est ce que je ne comprends pas ?

Merci.

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 09:39
par A2Energie
Bonjour,

Ton problème vient clairement de "0x000E0018"

Car en testant

Code : Tout sélectionner

$h=WinGetClassList ("[ACTIVE]")
cela fonctionne.

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 10:11
par jguinch
Pour Firefox, il y a l'UDF Firefox.
Perso, je n'utilise que IE pour ce qui est de l'automatisation

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 10:39
par DimVar
A2Energie a écrit :Bonjour,

Ton problème vient clairement de "0x000E0018"

Car en testant

Code : Tout sélectionner

$h=WinGetClassList ("[ACTIVE]")
cela fonctionne.
Quand j'utilise ton parametre, voila le resultat du consolewrite :
► Afficher le texte
Je n'y vois pas de Firefox....

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 10:42
par DimVar
jguinch a écrit :Pour Firefox, il y a l'UDF Firefox.
Perso, je n'utilise que IE pour ce qui est de l'automatisation
Oui, j'ai tenté d'y jeter un oeil mais j'ai beaucoup de lacunes sur la gestion des fenetres, GUI, et autres handles...
Raison de mon topic dans "demande de script".
Je cherche à switcher l'affichage des onglets.

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 10:55
par A2Energie
Ah tu cherche à switch les onglets.

Pour ma part, je n'ai jamais réussi, hormis avec des commandes clavier.

Le problème est que seul la fenêtre principale est reconnu, les onglets... non.
Je pense qu'il faut regarder du côté du msdn de microsoft pour IE. ca doit être peut être gérable, et encore
par contre sur firfox... je pense que c'est limite impossible.

Pour info, tu as autoit windows info qui est une petit programme très util pour retrouver les class et autres infos des fenêtres. Je te conseil de l'utiliser tu verras c'est magique.

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 11:09
par DimVar
Merci pour le Winfo (que je connais) mais le but etait de ne pas l'utiliser et de passer par un script.

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 11:55
par DimVar
En attendant, je vais passer par du Send. (ctrl + tab)
Comment , par le script, m'assurer que la fenetre FF ou IE est bien au 1er plan, pour etre sur que le send ne va pas etre envoyé sur une autre fenetre...?

Merci.

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 13:54
par TommyDDR
Juste pour info :

Code : Tout sélectionner

$h=WinGetClassList("0x000E0018")
Ne peut pas fonctionner car "0x000E0018" est un string et non un handle, essayez plutôt :

Code : Tout sélectionner

$h=WinGetClassList(Hwnd("0x000E0018"))
Je suppose que "0x000E0018" n'est qu'un test (Rappel : le handle est attribué dinamiquement à la création de la fenêtre. Donc si vous fermez, relancez le programme, le handle changera)

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 14:24
par walkson
Bonjour,
Sauf erreur de ma part, avec process (ProcessList ou ProcessExists) on obtient un PID que l'on peut traduire en handle. Cela devrait permettre de récupérer le Handle de Firefox
[Edit] j'ai retrouve le script:
► Afficher le texte
[Edit 2] ce script n'est pas de moi mais d'un illustre scripteur de ce forum...

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 14:48
par jguinch
► Afficher le texte

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 14:53
par DimVar
walkson a écrit :... (ProcessList ou ProcessExists) on obtient un PID que l'on peut traduire en handle...
Bien vu pour l'astuce, je la note.
TommyDDR a écrit :Juste pour info :

Code : Tout sélectionner

$h=WinGetClassList("0x000E0018")
Ne peut pas fonctionner car "0x000E0018" est un string et non un handle, essayez plutôt :
String car elle est entre double quote ? Dans ce cas, cette commande devrait fonctionner, hors elle ne fonctionne pas :

Code : Tout sélectionner

$h=WinGetClassList(0x000E0018)
TommyDDR a écrit :Je suppose que "0x000E0018" n'est qu'un test (Rappel : le handle est attribué dynamiquement à la création de la fenêtre. Donc si vous fermez, relancez le programme, le handle changera)
"0x000E0018" n'est que le retour d un winlist. Et d'apres la doc de cette function (WinGetClassList) : title, hWnd et class sont des valeurs possibles pour le 1er param. C'est la raison pour laquelle j'ai mis cette valeur.

Merci.

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 15:24
par jguinch
DimVar : ce que Tommy veut dire, c'est que d'un part, un Handle de fenêtre change à chaque fois que tu lances l'application. D'autre part la syntaxe ne nécessite pas de double quotes (car c'est une valeur numérique qui est attendue).

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 16:21
par DimVar
jguinch a écrit :DimVar : ce que Tommy veut dire, c'est que d'un part, un Handle de fenêtre change à chaque fois que tu lances l'application...
Oui oui, j'avais saisi :)
jguinch a écrit :
► Afficher le texte
Mais c'est parfait ca ! Tu peux m'en dire plus sur cette valeur : [REGEXPTITLE:(?i)Mozilla Firefox$]
C'est quoi ce charabia ? On peut faire du regex dans un title ? Pourquoi alors cette commande ne renvoi rien : WinGetHandle("Mozilla Firefox")

Merci

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 18:07
par jguinch
Ca ne marche pas avec "Mozilla Firefox" car par défaut, la recherche se fait en mode 1 : Matches partial titles from the start.
Tu peux essayer le mode 2 avec Opt("WinTitleMatchMode", 2), là ça marchera.
Moi j'avais utilisé ["REGEXPTITLE:(?i)Mozilla Firefox$"] pour fenêtre dont le titre finit par Mozilla Firefox

Pour plus d'infos, voir l'aide dans la rubrique Using Autoit / Window Titles and Text (Advanced).

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 18:23
par mikell
Gné :mrgreen:

Code : Tout sélectionner

Opt("WinTitleMatchMode", -2)

$h = WinGetClassList ("firefox")
MsgBox (0,@error, $h)

$k = WinGetClassList (WinGetHandle("firefox"))
MsgBox (0,@error, $k)

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 22:49
par TommyDDR
Il me semble que même la forme 0x12345678 ne fonctionne pas, il faut vraiment utiliser Hwnd(0x12345678)

Re: [..] Question handle et window

Posté : jeu. 04 déc. 2014 23:36
par jguinch
Merci Mikell (de me foutre la honte)
Dans tous les cas, aucun contrôle ne sera retourné pour Firefox... C'est bien ça le problème

Re: [..] Question handle et window

Posté : ven. 05 déc. 2014 08:57
par DimVar
jguinch a écrit :Ca ne marche pas avec "Mozilla Firefox" car par défaut, la recherche se fait en mode 1 : Matches partial titles from the start.
Tu peux essayer le mode 2 avec Opt("WinTitleMatchMode", 2), là ça marchera.
Moi j'avais utilisé ["REGEXPTITLE:(?i)Mozilla Firefox$"] pour fenêtre dont le titre finit par Mozilla Firefox

Pour plus d'infos, voir l'aide dans la rubrique Using Autoit / Window Titles and Text (Advanced).
Géniale cette page d'aide ! J'ai compris les 3/4 de mes erreurs sur la gestion des fenetres, merci !

Re: [..] Question handle et window

Posté : ven. 05 déc. 2014 08:59
par DimVar
TommyDDR a écrit :Il me semble que même la forme 0x12345678 ne fonctionne pas, il faut vraiment utiliser Hwnd(0x12345678)
Merci, c'est noté.