Page 1 sur 1
[..] Agir sur la fenêtre portant tel handle
Posté : mar. 11 mars 2014 19:59
par Alusion76
Bonjour à toutes et a tous, alors voilà, je suis nouveau sur le forum et je commence donc a faire quelque script, jusque la j'arrivais à me débrouiller
Mais j'ai bloqué sur une certaine chose alors je voudrais savoir si ce serais possible, faisable et si oui comment le faire

En cherchant je n'ai malheureusement pas trouver de sujet parlant de ça (Surement une erreur de ma part

)
Alors, j'aimerai que le script que j'ai créer agisse sur une handle donné, c'est a dire que je regarderai l'handle de ma fenêtre windows avec au3info et je le copie-colle dans le script pour informé a celui-ci d’agir sur cette fenêtre et pas une autre. Sachant que j'aurais plusieur fenêtre du même nom et même Class, voilà pourquoi je souhaiterai utilisé l'handle particulièrement
Merci de vos réponses et de votre aides

Re: [...] Agir sur la fenêtre portant tel handle
Posté : mar. 11 mars 2014 20:46
par Tlem
Bonsoir.
Hé bien utilisez tout simplement le handle de votre fenêtre dans les commandes de contrôle en lieu et place du paramètre "title". ^^
Re: [...] Agir sur la fenêtre portant tel handle
Posté : mar. 11 mars 2014 21:06
par Alusion76
ah merci bien, je n'y avais pas penser
j'utilisais : Local $hWnd = WinWait("[CLASS:NomDeClass]", "", 10)
WinActivate($hWnd)
pour ça que je ne trouvais pas :p
Edit: Pouvez juste m'indiquez le nom pour le retrouver dans l'index ? Je ferais le reste moi-même

Re: [...] Agir sur la fenêtre portant tel handle
Posté : mar. 11 mars 2014 21:15
par Tlem
Le nom de quoi ?
Re: [...] Agir sur la fenêtre portant tel handle
Posté : mar. 11 mars 2014 21:18
par Alusion76
J'ai pus trouver, je penser que c'était une autre fonction que winactivate, je te remercie de ta réponse tu m'as été d'une aide précieuse
Pour ceux que ça pourrais intéresser en lisant ce topic : (0x000703BC = nom du handle)
Local $hWnd = WinWait("0x000703BC", "", 10)
WinActivate($hWnd)
Re: [...] Agir sur la fenêtre portant tel handle
Posté : mar. 11 mars 2014 21:27
par mikell
Alusion76 a écrit : j'aimerai que le script que j'ai créer agisse sur une handle donné, c'est a dire que je regarderai l'handle de ma fenêtre windows avec au3info et je le copie-colle dans le script pour informé a celui-ci d’agir sur cette fenêtre et pas une autre.
Attention, j'ai l'impression que tu te mélanges les pinceaux
Ce que tu veux apparemment c'est pouvoir gérer de manière indépendante plusieurs fenêtres ouvertes par la même application
Mais :
Récupérer un handle avec Au3Info pour l'utiliser ensuite dans un script ne marchera pas, parce que le handle attribué par Windows à une fenêtre d'application change à chaque fois, ce n'est jamais le même
Exemple en ouvrant une fenêtre de bloc-notes 2 fois de suite :
► Afficher le texte
Code : Tout sélectionner
$pid = Run("notepad.exe")
Sleep(500)
$handle1 = WinGetHandle("[active]")
ProcessClose($pid)
Sleep(500)
$pid = Run("notepad.exe")
Sleep(500)
$handle2 = WinGetHandle("[active]")
ProcessClose($pid)
Msgbox(0,"", $handle1 & @crlf & $handle2)
Par contre si à chaque ouverture de fenêtre le script utilise immédiatement WinGetHandle pour récupérer son handle, là ça marchera (tant que ces fenêtres existeront)
Exemple
► Afficher le texte
Code : Tout sélectionner
$pid = Run("notepad.exe")
Sleep(500)
$handle1 = WinGetHandle("[active]")
Sleep(500)
$pid = Run("notepad.exe")
Sleep(500)
$handle2 = WinGetHandle("[active]")
$pos = WinGetPos($handle1)
WinMove($handle2, "", $pos[0]+100, $pos[1]+100)
Sleep(1000)
WinActivate($handle1)
Send("tralala")
Sleep(1000)
WinActivate($handle2)
Send("tsoin tsoin")
Sleep(1000)
Exit
Re: [...] Agir sur la fenêtre portant tel handle
Posté : mar. 11 mars 2014 21:36
par Alusion76
Merci de ton aide, cela seras plus simple comme ça, car je comptai changer le nom du handle a chaque utilisation
