Merci d'avance...
[R] Deux fenêtres qui portent le même nom...
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Deux fenêtres qui portent le même nom...
Bonsoir... voila mon souci, et oui encore et toujours des soucis... Grâce à WinActivate, ControlSend,... on peut, en ayant les infos de chaque fenêtre choisir dans quelle fenêtre ou control intervenir... comment faire alors si les fenêtres portent le même nom (par ex: "Bloc note- Sans Titre") ?
une solution pour qu'elle soient distinctes?
Merci d'avance...
Merci d'avance...
- Tlem
- Site Admin

- Messages : 11816
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Deux fenêtres qui portent le même nom...
Le seul élément qui pourrait vous permettre de différencier deux fenêtres identiques, c'est le handle de celles-ci.
Si ce sont des applications que votre script lance, pas de problème. Sinon vous devrez rechercher les fenêtres de même nom et récupérer leur handle.
Si ce sont des applications que votre script lance, pas de problème. Sinon vous devrez rechercher les fenêtres de même nom et récupérer leur handle.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Deux fenêtres qui portent le même nom...
handle? Ce même handle qu'affiche Au3info? si je ne m'abuse c'est la plage mémoire ou est située la fenêtre c'est ça? Donc de toute manière à chaque session, la réecriture ou du moins le changement du script sera nécessaire...? enfin bref, et si j'ai donc les handles des deux fenetres... ou utiliser ces handles, y a t'il une commande spécifique? car à part
WinGetHandle, je ne vois pas de fonctions qui s'y réfère...
WinGetHandle, je ne vois pas de fonctions qui s'y réfère...
- Tlem
- Site Admin

- Messages : 11816
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Deux fenêtres qui portent le même nom...
Utilisez la commande WinList().
Comme cela vous aurez le titre des fenêtres et leur handle.
Une simple recherche du nom de la fenêtre dans le tableau vous amènera vers le handle.
Comme cela vous aurez le titre des fenêtres et leur handle.
Une simple recherche du nom de la fenêtre dans le tableau vous amènera vers le handle.
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Re: [..] Deux fenêtres qui portent le même nom...
Code : Tout sélectionner
$var = WinList()
For $i = 1 to $var[0][0]
; Only display visble windows that have a title
If $var[$i][0] <> "" AND IsVisible($var[$i][1]) Then
MsgBox(0, "Details", "Title=" & $var[$i][0] & @LF & "Handle=" & $var[$i][1])
EndIf
Next
Func IsVisible($handle)
If BitAnd( WinGetState($handle), 2 ) Then
Return 1
Else
Return 0
EndIf
EndFuncCode : Tout sélectionner
ControlSend("nom de la fenêtre(obsolèthe puisque les deux ou plus ont le même nom)", "class ID", "")Je suis un peu perdu... je suis désolé d'être casse c... mais je débute et je crois que je me suis pas attaqué au plus simle
Re: [..] Deux fenêtres qui portent le même nom...
Résumons (je sens que je vais y passer la nuit mais bon) :
J'ai deux fenêtres qui portent le même nom : "Sans titre - Bloc-notes"
Grâce à Au3info ou à la WinList, j'obtiens les handle des deux fenêtres:
0x004904BA et 0x004904BA (Seule chose qui puissent les différencier)
Je sais à présent qu'un ControlSend ne sera utile que si j'arrive à faire entrer dans mon script la $var handle dans le genre :
if $handle = 0x0049... then
ControlSend ("Sans titre... ... ..."coucou")
Mais bon je sêche, si tu peux m'aider un peu plus Tlem, je t'en serais reconnaissant
...
Autre chose, tu dis :
"Si ce sont des applications que votre script lance, pas de problème."
Dans quelle mesure? parceque ce serait des handle prédéfinis?
J'ai deux fenêtres qui portent le même nom : "Sans titre - Bloc-notes"
Grâce à Au3info ou à la WinList, j'obtiens les handle des deux fenêtres:
0x004904BA et 0x004904BA (Seule chose qui puissent les différencier)
Je sais à présent qu'un ControlSend ne sera utile que si j'arrive à faire entrer dans mon script la $var handle dans le genre :
if $handle = 0x0049... then
ControlSend ("Sans titre... ... ..."coucou")
Mais bon je sêche, si tu peux m'aider un peu plus Tlem, je t'en serais reconnaissant
Autre chose, tu dis :
"Si ce sont des applications que votre script lance, pas de problème."
Dans quelle mesure? parceque ce serait des handle prédéfinis?
- Tlem
- Site Admin

- Messages : 11816
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Deux fenêtres qui portent le même nom...
Pour répondre à votre première question, utilisez tout simplement le handle de la fenêtre au lieu du titre dans la commande ControlSend.
Si vous regardez l'aide associé à la commande, sur le lien Controls de la description de controlID, vous pouvez lire qu'il est possible d'utiliser le commutateur INSTANCE ce qui vous permettrait de gérer la première ou la seconde instance de votre bloc note.
Allez jeter un oeil ici (et particulièrement en bas): http://www.autoitscript.fr/autoit3/docs ... vanced.htm
Pour répondre à votre deuxième question, le handle est un numéro donné par le système (Windows dans votre cas) et qui change généralement à chaque création d'une fenêtre (tout comme le ControlID). Vous ne pouvez donc être certain que le handle attribué soit le même la fois suivante.
Par contre, si votre script lance la création de la fenêtre, alors vous pouvez récupérer ce numéro et donc la contrôler.
La commande Run par exemple peut vous aider en ce sens.
Code : Tout sélectionner
If $handle = 0x0049... Then
ControlSend (0x0049, "", "" , "coucou")Code : Tout sélectionner
ControlSend("Bloc note- Sans Titre", "", "[CLASS:Edit; INSTANCE:1]", "coucou")Pour répondre à votre deuxième question, le handle est un numéro donné par le système (Windows dans votre cas) et qui change généralement à chaque création d'une fenêtre (tout comme le ControlID). Vous ne pouvez donc être certain que le handle attribué soit le même la fois suivante.
Par contre, si votre script lance la création de la fenêtre, alors vous pouvez récupérer ce numéro et donc la contrôler.
La commande Run par exemple peut vous aider en ce sens.
Code : Tout sélectionner
$HandleNotePad = Run("Notepad.exe", "", @SW_MAXIMIZE)Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".

