AutoIt Français

Nouveau forum : http://www.autoitscript.fr/
 
AccueilFAQRechercherS'enregistrerMembresGroupesConnexionhttp://www.autoitscript.fr

Partagez | 
 

 lancer série de touches clavier dans une application ...

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
squallxxrinoa
Débutant
Débutant


Nombre de messages : 6
Date d'inscription : 11/05/2007

MessageSujet: lancer série de touches clavier dans une application ...   2007-05-11, 13:30

Bonjour à tous !!:D
Je viens juste d'avoir autoIt, et je voulais savoir si il était possible de créer un programme qui exécute une série de touches clavier, mais dans une autre application:
Je m'explique : J'ai un programme de compta auquel j'ai besoin d'automatiser certaines taches simple ...mais très très récurrente ..:evil:

J'ai déjàessayé avec Atoscripwriter, et j'ai aussi essayé avec AutoIt un script simple : send("445852") ...Mais le problème reste le meme :
Lorsque je lance le script, et que je clique sur la fenêtre de mon logiciel, rien ne se passe... J'ai l'impression que ès que je rentre dans l'aplication de compta, cette dernière bloque toute autre programme ...
Alors j'ai essayé en inscrivant send("alt+tab"), avant :send("445852") ... histoire de ne pas avoir à cliké et d'être sur que le script démarre bien dans mon logiciel, mais là pareille ...ça marche pas ...
Je pense que je ne m'y connait pas assez en prog pour trouver une solution...HELP !
MErci beaucoup!!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 13:40

il faut cibler ton application avec wingethandle de là tu pourra executer tout ce que tu désire.

[u]WinGetHandle[/u] ( "titre" [, "text"] )
après tu pourra faire des send ou controlsend

j'ai pas plus d'experience que toi ,excuse moi d'avance.

Utilise par la même occasion le logiciel au3info.exe , t'aura pas mal d'info sur les controle de ton logiciel (classname < important, positionnement, les bouton , raccourci , couleur, ect)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
squallxxrinoa
Débutant
Débutant


Nombre de messages : 6
Date d'inscription : 11/05/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 13:53

Merci !!
Mais je ne comprends pas vraiment l'utilisation de Wingethandle..."titre" je suppose que c'est le titre de ma fenêtre, mais "text" , c'est quoi ? .... Et si titre c'est vraiment le texte de ma fenêtre, il y a un problème car je n'ai pas de titre fixe pour ma fenêtre :
En fonction de ce que je fais dans mon application, le titre de la fenêtre change tous le temps, de façon aléatoire ...(c'est bizarrez je sais..)
Il n'y a pas un moyen de cibler par "processus "plutot que pa fenêtre? car le nom de processus de mon application rest toujours le meme lui ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
squallxxrinoa
Débutant
Débutant


Nombre de messages : 6
Date d'inscription : 11/05/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 14:16

Je viens d'effectuer un test :
J'ai créer un script de raccourcis :
normalement, en faisant:
"ctrl + m" , ma souris doit bouger de gauche à doite ...
Quand je suis sous Windows, ou une quelconque autre fenêtre, et que je fais 'ctrl+m' , ça fonctionne ...

Mais dès que je clique sur mon application, que je suis bel et bien dessus, lorsque je fais 'ctrl+m' , la souris ne bouge plus ...
Mon programme de compta , à l'air de bloquer les autres programmes ...snif .. je ne peux pas changer de programme, pas la peine de me donner cette réponse ^^ lol...Je dois trouver une autre solution ..
Merci de votre aide ...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 14:23

pour le titre indique la class de ton logiciel
le text c'est ceux qui pourrait se trouver, c'est pour cibler une fenetre en particulier.

pour l'envoi il faut cibler la classname (avec le logiciel au3info.exe)

je vais prendre comme exemple wordpad, l'application se lance avec la cmd shellexecute, ensuite un message nous indique que le programme est lancé, de la on la cache (c'est un exemple pour comprendre) ensuite on envoi un msg dans le edit de wordpad et on la repasse en maximisation . si tu ne comprend hésite pas a demander

[color=#ff0000][b][i]AutoItSetOption[/color][/i]([color=#9999cc]"WinTitleMatchMode"[/color],[/b][color=#000000] [/color][i][color=#ac00a9][b]4[/b][/color][/i][b])
[/b][color=#009933][i];Ici on lance la commande pour appeler wordpad
[/i][/color][b][i][color=#000090]ShellExecute[/color][/i]([color=#9999cc]"wordpad"[/color])
[/b][i][color=#009933];si une erreur se produit (genre pas de programme wordpad)
[/color][/i][color=#0000ff][b]If[/b][/color][color=#000000] [/color][color=#ff33ff][b]@error[/b][/color][color=#000000] [/color][b][color=#0000ff]Then
[/color][i][color=#000090]MsgBox[/color][/i]([i][color=#ac00a9]4096[/color][/i],[/b][color=#000000] [/color][color=#9999cc][b]"Erreur"[/b][/color][b],[/b][color=#000000] [/color][color=#9999cc][b]"Programme non trouvé.."[/b][/color][b])
[/b][color=#0000ff][b]Else
[/b][/color][color=#009933][i];le petit message box avec un temp de 3 sec (elle close seul)
[/i][/color][b][i][color=#000090]msgbox[/color][/i]([i][color=#ac00a9]0[/color][/i],[color=#9999cc]"Test"[/color],[color=#9999cc]"bonjour, wordpad vient d'être lancé"[/color],[i][color=#ac00a9]3[/color][/i])
[/b][i][color=#009933]; On regarde le Handle (class:)
[/color][/i][color=#aa0000][b]$handle[/b][/color][color=#000000] [/color][b]=[/b][color=#000000] [/color][i][color=#000090][b]WinGetHandle[/b][/color][/i][b]([color=#9999cc]"classname=WordPadClass"[/color],[/b][color=#000000] [/color][color=#9999cc][b]""[/b][/color][b])

[/b][color=#009933][i];La on cache la fenetre tu peux la minimizer, la maximiser (voir flag)
[/i][/color][b][i][color=#000090]winsetstate[/color][/i]([color=#aa0000]$handle[/color],[color=#9999cc]""[/color],[color=#ff33ff]@SW_HIDE[/color])
[/b][color=#009933][i]; On envoi directement dans l'edit du programme une petite phrase (richedit50w1 on le trouve au niveau du classnameNN toujours avec le logiciel au3info.exe)
[/i][/color][b][i][color=#000090]ControlSend[/color][/i]([color=#aa0000]$handle[/color],[/b][color=#000000] [/color][color=#9999cc][b]""[/b][/color][b],[/b][color=#000000] [/color][color=#9999cc][b]"RICHEDIT50W1"[/b][/color][b],[/b][color=#000000] [/color][b][color=#9999cc]"bonjour, bonjour rien de bien difficile, attend la suite "[/color])
[/b][b][color=#0000ff]EndIf
[/color][i][color=#000090]sleep[/color][/i]([i][color=#ac00a9]1000[/color][/i])
[i][color=#000090]winsetstate[/color][/i]([color=#aa0000]$handle[/color],[color=#9999cc]""[/color],[color=#ff33ff]@SW_MAXIMIZE[/color])


[/b][i][color=#009933];si je cache la fenetre c'est pour te montrer qu'on peut faire des envoi dans la fenetre qu'on aura ciblé[/color][/i][color=#000000] [/color]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
ani
Modérateur
Modérateur


Nombre de messages : 563
Date d'inscription : 23/01/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 14:51

y a telement de solution attend que quelqu'un d'autre réplique, car mon niveau n'est pas très haut, mais j'essaie de répondre
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
squallxxrinoa
Débutant
Débutant


Nombre de messages : 6
Date d'inscription : 11/05/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 14:58

D'accord ...j'ai compris ....sauf la commande :[b][color=#000090][i]AutoItSetOption[/i][/color][color=#ff0000]([/color][color=#9999cc]"WinTitleMatchMode"[/color][color=#ff0000],[/color][/b] [b][i][color=#ac00a9]4[/color][/i][color=#ff0000]) [/color][/b]
[b][color=#ff0000]pourkoi 4? [/color][/b]
[b][color=#ff0000]j'ai pas trop compris mais bon, j'ai fais du copier coller ...Bon alors ça marche, j'ai été chercher la classe de mon programme qui est : "ktvdwqfnawa "... ^^ sisi c'est ça ..![/color][/b]
[b][color=#ff0000]J'ai compilé cela en .exe :[/color][/b]
[b][color=#ff0000][color=royalblue]AutoItSetOption("WinTitleMatchMode", 4)
$handle = WinGetHandle("classname=ktvdwqfnawa", "")
winsetstate($handle,"",@SW_MAXIMIZE)
[/color][/color][/b]
[b][color=#ff0000][color=royalblue][color=black]et j'ai lancé le .exe pour regarder ce qui se passait : LA fenêtre de mon logiciel de compta se maximise ..c'est bon ...Mais je ne suis toujours pas "dedans" ...LA fenêtre en surbrillance est celle avec laquelle j'ai lancé le .exe..Donc, en arrière plan, j'ai toujours mon logiciel de compta...[/color][/color][/color][/b]
[b][color=#ff0000][color=royalblue][color=#000000]Et finalement, le but de tout ça, qui était quand meme de mettre mon logiciel de compta en premier plan, n'est toujours ps atteint ...[/color][/color][/color][/b]
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
squallxxrinoa
Débutant
Débutant


Nombre de messages : 6
Date d'inscription : 11/05/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 15:21

BOn ...j'ai essayé un autre test :
J'ai exécuté un script qui active la touche "tabulation" du clavier, en activant aussi la touche "*" ...
Cette fois ça marche, j'arrive à mettre mon logiciel en premier plan, seulement ce sont les touches qu'il ne reconnait pas comme des commandes, mais comme des touches ... je m'explique :
normalement quand je suis dans mon logiciel : lorsque j'appuie sur * , cela exécute une formule de calcul
Mais quand je passe par me script, il prend la commande du script comme un texte,et non pas comme une action... c'est à dire qu'il m'écrit : * ....au lieu d'activer l'action qui s'y reffere...snif ...je bloque ..
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
squallxxrinoa
Débutant
Débutant


Nombre de messages : 6
Date d'inscription : 11/05/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 16:59

Ok ... c'est bon j'ai compris !!!! J'y suis presque :
En fait , pour que mon logiciel de compta intègre "*" comme une action et non pas comme dutexte, il faut que je le mette sous incollad {} ... et là ça fonctionne .... Mon dernier problème : comment envoyer une commande qu'il faut maintenir?
JE dois maintenir le bouton * normalement, sinon ça ne fonctionne pas ... Donc j'ai fait le script:
send("{*}")
send("{*}")
send("{*}")

Mais comme on peut s'en douter, cela rappuit sur le bouton au lieu de le maintenir .. Quel est la commande qui indique au script le maintien de la touche ?
MErci beaucoup
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
sylvanie
Modérateur
Modérateur


Nombre de messages : 300
Date d'inscription : 10/03/2007

MessageSujet: Re: lancer série de touches clavier dans une application ...   2007-05-11, 21:00

Send("{* down}") ;appuie sur *
Send("{* up}") ;relache *
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: lancer série de touches clavier dans une application ...   Aujourd'hui à 10:39

Revenir en haut Aller en bas
 
lancer série de touches clavier dans une application ...
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [résolu]Message d'erreur ... Besoin d'aide !
» Intégrer la piste wav dans l'application finale ( .exe)
» Utilisation des animations EAnim dans une application JAVA
» (résolu)touches clavier: ~ au lieu de @, etc...
» Problème d'info midi avec pédalier fcb1010

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
AutoIt Français :: AutoIt v3 :: Entraide-
Sauter vers: