OVH Cloud OVH Cloud

Re: piloter une application

2 réponses
Avatar
oliv
j'ai essayé ceci

from Tkinter import
import tim
from win32com.client import Dispatc
Auto = Dispatch("AutoItX3.Control"
print “un



titreFenetre = “essai
Auto.Run("Notepad.exe"
Auto.WinActivate("essai"

def ecrire()
"ee
import tim
from win32com.client import Dispatc
Auto = Dispatch("AutoItX3.Control"
print “un
titreFenetre = “essai
#Auto.Run("Notepad.exe"
Auto.WinActivate("essai"
Auto.ControlFocus("essai"‚""‚""
time.sleep(1
Auto.Send("12345"
time.sleep(0.4
Auto.Send("{+}"
time.sleep(0.4
print “deux
Auto.Send("54321"

root = Tk(
root.geometry('750x100+0+0'
bouton1=Button(root‚ text = “ecrire “‚ command=ecrire)
bouton1.place(relx=0.20‚ rely=0.10‚ anchor=CENTER

root.mainloop(
mais lorsque je clique sur le bouton‚ ça ne donne pas le focus à la fenetre où je veux écrire· Par contre‚ si je clique dans la fenetre‚ l'appli écrit dedans

d'autre par
je n'ai pas trouvé comment écrire dans la fenetre qui a le focus‚ car toutes les commandes de AutoItX3 necessitent de nommer la fenetre par son titre· Or ce que je veux c'est que l'utilisateur donne le focus à la fenetre et que ensuite lorsqu'on clique sur le bouton‚ l'appli écrive dans cette fenetre donnée par l'utilisateu
la fonction titre=Auto.WinGetTitle("") me donne à chaque fois tk comme valeur‚ et le focus est donc fixé sur la fenetre de l'application et pas sur celle où l'utilisateur veux écrire !!

--
oliv

-----------------------------------------------------------------------
Voir theme: http://www.frbox.net/viewtopic-533202.htm

Envoyé de http://www.frbox.ne

2 réponses

Avatar
BrunoL
j'ai essayé ceci :

[...]

je n'ai pas trouvé comment écrire dans la fenetre qui a le focus‚ car toutes les commandes de AutoItX3 necessitent de nommer la fenetre par son titre· Or ce que je veux c'est que l'utilisateur donne le focus à la fenetre et que ensuite lorsqu'on clique sur le bouton‚ l'appli écrive dans cette fenetre donnée par l'utilisateur
la fonction titre=Auto.WinGetTitle("") me donne à chaque fois tk comme valeur‚ et le focus est donc fixé sur la fenetre de l'application et pas sur celle où l'utilisateur veux écrire !!!


Cela répond il au besoin ?


_______________________________________________________
# -*- coding: cp1252 -*-
from Tkinter import *
import time
from win32com.client import Dispatch
Doc = Dispatch("AutoItX3.Control")
titreFenetre = "Sans titre - Bloc-notes"
Doc.Run("Notepad.exe")
Doc.WinActivate("Sans titre - Bloc-notes")

def ecrire():

Doc.ControlFocus("Sans titre - Bloc-notes","","")
time.sleep(0.1)
Doc.Send("12345")
time.sleep(0.1)
Doc.Send("{+}")
time.sleep(0.1)
Doc.Send("54321")
Doc.Send(chr(13))

def fermer():
Doc.ControlFocus("Sans titre - Bloc-notes","","")
Doc.WinClose(titreFenetre , '')
Doc.Send("!n")

fen = Tk()
fen.geometry('750x100+0+0')
bouton1=Button(fen, text = "écrire ", commandìrire)
bouton1.place(relx=0.20, rely=0.10, anchorÎNTER)
bouton2=Button(fen, text = "fermer ", commandþrmer)
bouton2.place(relx=0.40, rely=0.10, anchorÎNTER)
bouton3=Button(fen, text = "quitter ", commandþn.quit)
bouton3.place(relx=0.60, rely=0.10, anchorÎNTER)

fen.mainloop()
fen.destroy()

_____________________________________________________

Avatar
Méta-MCI
Bonsoir !

Je reviens après plusieurs jours de déboires avec les newsgroups usenet
(erreur 10061, etc.)

Voici le code de BrunoL, légèrement retouché (et juste un poil commenté) :


# -*- coding: cp1252 -*-
from Tkinter import *
import time
import win32com.client
Doc = win32com.client.Dispatch("AutoItX3.Control")

titreFenetre = "Sans titre" #seul le début du titre est nécessaire
Doc.Run("Notepad.exe")
Doc.WinWait(titreFenetre,"",6) #on attend (6 s maxi) que la fenêtre soit
ouverte ; inutile de mettre le focus

def ecrire():
Doc.ControlFocus(titreFenetre,"",15)
# on peut adresser directement un contrôle d'une fenêtre, par son
numéro ; les numéros peuvent être trouvés avec Au3info
# cel peut être très utile, s'il y a plusieurs champs (contrôles)
dans la fenêtre, pour choisir le bon champ
Doc.Send("12345")
Doc.Send("{+}")
Doc.Send("54321rABCDéèç@ëï€rrrZZZZZ")

def fermer():
Doc.WinKill(titreFenetre , '')
#Doc.Send("!n") #inutile avec WinKill

fen = Tk()
fen.geometry('500x100+0+0')
bouton1=Button(fen, text = "écrire ", commandìrire)
bouton1.place(relx=0.20, rely=0.25, anchorÎNTER)
bouton2=Button(fen, text = "fermer ", commandþrmer)
bouton2.place(relx=0.50, rely=0.25, anchorÎNTER)
bouton3=Button(fen, text = "quitter ", commandþn.quit)
bouton3.place(relx=0.80, rely=0.25, anchorÎNTER)

fen.mainloop()
fen.destroy()