[..] Controlcommand et Handle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Oxygene31
Niveau 2
Niveau 2
Messages : 26
Enregistré le : sam. 18 avr. 2009 16:36
Status : Hors ligne

[..] Controlcommand et Handle

#1

Message 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 :D
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
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Controlcommand et Handle

#2

Message 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 ....
A+
Oxygene31
Niveau 2
Niveau 2
Messages : 26
Enregistré le : sam. 18 avr. 2009 16:36
Status : Hors ligne

Re: [..] Controlcommand et Handle

#3

Message 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...
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11823
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Controlcommand et Handle

#4

Message 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
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é".
Oxygene31
Niveau 2
Niveau 2
Messages : 26
Enregistré le : sam. 18 avr. 2009 16:36
Status : Hors ligne

Re: [..] Controlcommand et Handle

#5

Message par Oxygene31 »

Merci pour les liens mais je ne débute pas dans l'autoit :D
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.
Avatar du membre
moutelous
Niveau 6
Niveau 6
Messages : 229
Enregistré le : sam. 09 févr. 2008 19:51
Localisation : Rennes
Status : Hors ligne

Re: [..] Controlcommand et Handle

#6

Message par moutelous »

Oxygene31 a écrit :Merci pour les liens mais je ne débute pas dans l'autoit :D
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 ???
A+
Oxygene31
Niveau 2
Niveau 2
Messages : 26
Enregistré le : sam. 18 avr. 2009 16:36
Status : Hors ligne

Re: [..] Controlcommand et Handle

#7

Message 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.
Avatar du membre
SrBelial
Niveau 7
Niveau 7
Messages : 335
Enregistré le : jeu. 22 juil. 2010 11:29
Localisation : 81 et 31
Status : Hors ligne

Re: [..] Controlcommand et Handle

#8

Message 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()

Code : Tout sélectionner

$handle = ControlGetHandle("[CLASS:Notepad]", "", "Edit1")
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
.-SrB-. The One
  • NON ! AutoIt n'est PAS un langage réservé à la réalisation de bots !
  • OUI ! AutoIt est un langage à part entière !
  • Dans SciTE sélectionnez 1 mot puis F1
  • Don't want english doc ?? go to documentation française !! >>ICI<<
[/size]
Répondre