Page 1 sur 1
[..] Controlcommand et Handle
Posté : sam. 28 août 2010 15:18
par Oxygene31
Bonjour à tous !!
J'ai plusieurs questions concernant les control command (ControlSend, ControlClick etc ...) et nottement sur comment envoyer ce type de controles sur une fenêtre dont on à que le titre et le Handle ?
Pour me familiariser avec ces fonctions j'ai débuté avec le bloc note
Quand on à le titre de la fenêtre ainsi que le ClassName tout se passe bien.
J'ai donc voulu tester sur d'autres applications.
Et sur une appli "x" la surprise Windows Info ne me donne aucune info si ce n'est le titre de la fenêtre et le Handle.
Je décide donc d'essayer avec les Handle :
1ere incompréhension :
Code : Tout sélectionner
$i=WinGetHandle ("Sans titre - Bloc-notes")
MsgBox(0, "test", $i)
==> Le Handle affiché est différent de celui donné par Autoit Window info
2eme incompréhension :
Code : Tout sélectionner
$i=WinGetHandle ("Sans titre - Bloc-notes")
ControlSend ( $i,"", "test")
==> Pas d'erreur mais rien ne se passe alors que le mot "test" aurait du s'écrire sur mon bloc note...
Voila donc si vous pouviez m'éclairer cela serait sympathique
Re: [..] Controlcommand et Handle
Posté : sam. 28 août 2010 16:46
par moutelous
Bonjour,
Oxygene31 a écrit :==> Le Handle affiché est différent de celui donné par Autoit Window info
Bizarre, je viens de faire le test .... le handle est bien le même. Etes vous sûr de pointer la bonne fenêtre avec "Autoit Window info" ?
Oxygene31 a écrit :==> Pas d'erreur mais rien ne se passe alors que le mot "test" aurait du s'écrire sur mon bloc note...
Premièrement vous n'avez pas le bon nombre d'argument dans votre commande ControlSend : "ControlSend ($i,"","","test")" sera mieux ...
D'autre part il est nécessaire d'activer la fenêtre du bloc-note pour pouvoir y écrire, donc avant votre "ControlSend" faite donc un "WinActivate($i)" et cela fonctionnera ....
Re: [..] Controlcommand et Handle
Posté : sam. 28 août 2010 21:21
par Oxygene31
Merci pour ta réponse.
Mon but est de faire fonctionner le script avec la fenêtre minimisé.
Code : Tout sélectionner
ControlSend ( "Sans titre - Bloc-notes", "", "Edit1", "test")
La ça marche mais j'ai tous les parametres alors qu'avec certaine application windows info ne me donne que le titre et le Handle...
Re: [..] Controlcommand et Handle
Posté : dim. 29 août 2010 00:30
par Tlem
Les bases de la partie automation d'une fenêtre sont très largement documentées que ce soit dans l'aide de AutoIt, sur la traduction de cette partie, dans le forum lui même et enfin sur le site du zéro.
Donc un minimum de recherches et de tests vous donnerons les réponses à vos questions de bases.
Quelques liens pour vous aider :
http://www.autoitscript.fr/forum/search.php
http://www.autoitscript.fr/autoit3/docs ... sbasic.htm
http://www.autoitscript.fr/autoit3/docs ... vanced.htm
http://www.autoitscript.fr/autoit3/docs ... otepad.htm
http://www.siteduzero.com/tutoriel-3-22 ... utoit.html
Re: [..] Controlcommand et Handle
Posté : dim. 29 août 2010 01:16
par Oxygene31
Merci pour les liens mais je ne débute pas dans l'autoit
Si je poste ici c'est que j'ai déjà fais quelques recherche.
Mon problème est que pour l'application que je veux commander en fenêtre réduite autoit windows info ne me donne que le titre de la fenêtre et son Handle (les autres champs sont vides).
Comme je ne me suis jamais servi des Handle je faisais donc des essais avec le bloc note.
Or en utilisant le Handle le ControlSend ne marche pas et faire" un "WinActivate()" (ou la effectivement ça marche) ne m'intéresse pas puisque je veux faire marcher ma fenêtre en background.
Re: [..] Controlcommand et Handle
Posté : dim. 29 août 2010 10:46
par moutelous
Oxygene31 a écrit :Merci pour les liens mais je ne débute pas dans l'autoit

Si je poste ici c'est que j'ai déjà fais quelques recherche.
Mon problème est que pour l'application que je veux commander en fenêtre réduite autoit windows info ne me donne que le titre de la fenêtre et son Handle (les autres champs sont vides).
OK ... Vous ne débutez pas ... Ok... Vous avez fait des recherches ..alors pourquoi ne pas pas directement aller à l'essentiel dans vos demandes et être plus explicite ???
Re: [..] Controlcommand et Handle
Posté : dim. 29 août 2010 14:41
par Oxygene31
Il me semble que j'avais été explicite mais je vais me reprendre alors:)
Je veux faire fonctionner mon script en background sur une application dont je n'ai que le Handle et le titre de la fenêtre.
Et comme je l'ai déja dit n'ayant jamais utilisé jusqu'à présent cette fonction je faisais des essai sur le bloc note.
Voici mon petit script pour le bloc note :
Code : Tout sélectionner
$i=WinGetHandle ("Sans titre - Bloc-notes")
ControlSend ($i,"","","test")
Rien ne se passe donc j'aimerais des précisions sur comment faire des controlSend ou autre type sur une application minimisé (fenêtre non active donc) sans connaitre d'autres champs que le titre de la fenêtre et son Handle.
Re: [..] Controlcommand et Handle
Posté : dim. 29 août 2010 22:05
par SrBelial
Bon alors une chose :
le ControlSend appelé ainsi a très peu de chances de marcher .....
tout simplement parce que vous lui passez le handle de la fenêtre et non le handle d'un controle .....
Votre fonction connait :
le handle de la fenêtre
la chaine de caractères à envoyer au contrôle ciblé
vous comprendrez aisément que ceci est insuffisant : il est quasiment impossible pour la fonction d'envoyer la chaine de caractère au controle.....
Documentez vous sur la fonction ControlGetHandle()
Ou bien utilisez AutoIt Window Info Tool plus précisément pour connaitre le contrôle que vous souhaitez manipuler !
(La fonction ControlSend possède 4 paramètres, intéressez vous au 3eme !!!)
En espérant que cela vous guidera un peu