Je tente de construire un clavier virtuel paramétrable ( c'est à dire pas ceux qu'on peut trouver actuellement) où chaque touche correspondra à un mot d'une liste (contenue dans un fichier texte)
J'ai déjà réalisé le gui avec les boutons contenant chaque mot et qui affichent ce mot dans un widget Text (Tkinter
Mon problème est maintenant de faire agir ces boutons, non pas sur un widget de l'appli, mais sur n'importe quelle application ouverte : traitement de texte, courrier electronique
On m'a déjà proposé comme solution
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jerome
oliv wrote:
Je tente de construire un clavier virtuel paramétrable ( c'est à dire pas ceux qu'on peut trouver actuellement) où chaque touche correspondra à un mot d'une liste (contenue dans un fichier texte). J'ai déjà réalisé le gui avec les boutons contenant chaque mot et qui affichent ce mot dans un widget Text (Tkinter) Mon problème est maintenant de faire agir ces boutons, non pas sur un widget de l'appli, mais sur n'importe quelle application ouverte : traitement de texte, courrier electronique. On m'a déjà proposé comme solution :
pour copier le mot dans le presse papier (ça marche)
Il faut ensuite donner le focus à une autre application et que le clavier reste devant : comment faire ceci ?
On m'a proposé d'utiliser FindWindowEx mais je n'ai pas réussi
puis il faudra y coller le contenu du presse papier : comment faire également
J'imagine que tu ne cherches à faire une application qui ne marche que sous windows...
Je ne connais pas le binding de l'api win32 en python mais j'imagine que tu dois effectivement pouvoir utiliser findwindows pour récupérer les handles sur les applis que tu veux : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/findwindow.asp
et envoyer un message de collage sur ce handle avec sendmessage ou postmessage.
En pseudo code :
hwnd = FindWindow("traitement de texte") PostMessage(hwnd,WM_PASTE) SetForegroundWindow(self.hwnd)
ou simuler l'appui d'une touche avec un événement clavier (CTRL+V) pour coller si WM_PASTE ne marche pas.
Faudrait tester mais je n'ai plus windows :)
oliv wrote:
Je tente de construire un clavier virtuel paramétrable ( c'est à dire pas ceux qu'on peut trouver actuellement) où chaque touche correspondra à un mot d'une liste (contenue dans un fichier texte).
J'ai déjà réalisé le gui avec les boutons contenant chaque mot et qui affichent ce mot dans un widget Text (Tkinter)
Mon problème est maintenant de faire agir ces boutons, non pas sur un widget de l'appli, mais sur n'importe quelle application ouverte : traitement de texte, courrier electronique.
On m'a déjà proposé comme solution :
pour copier le mot dans le presse papier (ça marche)
Il faut ensuite donner le focus à une autre application et que le clavier reste devant :
comment faire ceci ?
On m'a proposé d'utiliser FindWindowEx mais je n'ai pas réussi
puis il faudra y coller le contenu du presse papier : comment faire également
J'imagine que tu ne cherches à faire une application qui ne marche que
sous windows...
Je ne connais pas le binding de l'api win32 en python mais j'imagine que
tu dois effectivement pouvoir utiliser findwindows pour récupérer les
handles sur les applis que tu veux :
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/findwindow.asp
et envoyer un message de collage sur ce handle avec sendmessage ou
postmessage.
En pseudo code :
hwnd = FindWindow("traitement de texte")
PostMessage(hwnd,WM_PASTE)
SetForegroundWindow(self.hwnd)
ou simuler l'appui d'une touche avec un événement clavier (CTRL+V) pour
coller si WM_PASTE ne marche pas.
Je tente de construire un clavier virtuel paramétrable ( c'est à dire pas ceux qu'on peut trouver actuellement) où chaque touche correspondra à un mot d'une liste (contenue dans un fichier texte). J'ai déjà réalisé le gui avec les boutons contenant chaque mot et qui affichent ce mot dans un widget Text (Tkinter) Mon problème est maintenant de faire agir ces boutons, non pas sur un widget de l'appli, mais sur n'importe quelle application ouverte : traitement de texte, courrier electronique. On m'a déjà proposé comme solution :
pour copier le mot dans le presse papier (ça marche)
Il faut ensuite donner le focus à une autre application et que le clavier reste devant : comment faire ceci ?
On m'a proposé d'utiliser FindWindowEx mais je n'ai pas réussi
puis il faudra y coller le contenu du presse papier : comment faire également
J'imagine que tu ne cherches à faire une application qui ne marche que sous windows...
Je ne connais pas le binding de l'api win32 en python mais j'imagine que tu dois effectivement pouvoir utiliser findwindows pour récupérer les handles sur les applis que tu veux : http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/winui/windowsuserinterface/windowing/windows/windowreference/windowfunctions/findwindow.asp
et envoyer un message de collage sur ce handle avec sendmessage ou postmessage.
En pseudo code :
hwnd = FindWindow("traitement de texte") PostMessage(hwnd,WM_PASTE) SetForegroundWindow(self.hwnd)
ou simuler l'appui d'une touche avec un événement clavier (CTRL+V) pour coller si WM_PASTE ne marche pas.
Faudrait tester mais je n'ai plus windows :)
Méta-MCI
Bonjour !
3ème envoi (vendredi et dimanche ne sont pas passés)
- Piloter WSH par COM : http://aspn.activestate.com/ASPN/Mail/Message/activepython/544878
- Utiliser AutoIt via COM, solution que j'ai retenue, et qui permet, en plus des sendkeys, de piloter la souris, les fenêtres d'autres applications, la barre des tâches, etc.
@-salutations
Michel Claveau
Bonjour !
3ème envoi (vendredi et dimanche ne sont pas passés)
- Piloter WSH par COM :
http://aspn.activestate.com/ASPN/Mail/Message/activepython/544878
- Utiliser AutoIt via COM, solution que j'ai retenue, et qui permet, en plus
des sendkeys, de piloter la souris, les fenêtres d'autres applications, la
barre des tâches, etc.
- Piloter WSH par COM : http://aspn.activestate.com/ASPN/Mail/Message/activepython/544878
- Utiliser AutoIt via COM, solution que j'ai retenue, et qui permet, en plus des sendkeys, de piloter la souris, les fenêtres d'autres applications, la barre des tâches, etc.