[R] Question handle et window

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

[R] Question handle et window

#1

Message 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.
Modifié en dernier par DimVar le lun. 08 déc. 2014 09:56, modifié 1 fois.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] Question handle et window

#2

Message par A2Energie »

Bonjour,

Ton problème vient clairement de "0x000E0018"

Car en testant

Code : Tout sélectionner

$h=WinGetClassList ("[ACTIVE]")
cela fonctionne.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Question handle et window

#3

Message par jguinch »

Pour Firefox, il y a l'UDF Firefox.
Perso, je n'utilise que IE pour ce qui est de l'automatisation
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#4

Message 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....
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#5

Message 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.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
A2Energie
Niveau 5
Niveau 5
Messages : 146
Enregistré le : ven. 15 nov. 2013 20:22
Status : Hors ligne

Re: [..] Question handle et window

#6

Message 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.
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#7

Message par DimVar »

Merci pour le Winfo (que je connais) mais le but etait de ne pas l'utiliser et de passer par un script.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#8

Message 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.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2127
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Question handle et window

#9

Message 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)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Question handle et window

#10

Message 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...
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Question handle et window

#11

Message par jguinch »

► Afficher le texte
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#12

Message 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.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Question handle et window

#13

Message 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).
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#14

Message 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
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Question handle et window

#15

Message 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).
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Question handle et window

#16

Message 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)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2127
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] Question handle et window

#17

Message par TommyDDR »

Il me semble que même la forme 0x12345678 ne fonctionne pas, il faut vraiment utiliser Hwnd(0x12345678)
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2515
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Question handle et window

#18

Message 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
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#19

Message 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 !
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 870
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Question handle et window

#20

Message 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é.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Répondre