OVH Cloud OVH Cloud

Simulation d'entrée clavier

3 réponses
Avatar
Philippe Halet
Bonjour,

Je désirerai effectuer une opération qui semble assez simple mais pour
laquelle je ne trouve pas de solution: envoyer à une application des
simulations de pression de touche sur le clavier.

Je crois que j'ai deux solutions:
- l'application a le focus: dans ce cas, le simple fait d'envoyer des
caractères dans le buffer clavier devrait suffir
- l'application n'a pas le focus: il faudrait trouver un handle quelconque
sur l'application dont je connais le nom et ensuite de lui faire croire (!!)
que des touches ont été pressée...

Toute autre idée est la bienvenue évidement...

Quelqu'un peut-il m'aider à ce sujet?

Merci d'avance,

Philippe

3 réponses

Avatar
François Picalausa
bonjour/soir,

tu peux essayer un AppActivate suivit d'un SendKeys.
Mais la solution recommandée serait plutôt d'utiliser l'API
findWindow/FindWindowEx pour retrouver la/les fenêtre appropriées, envoyer
des messages pour remplir les champs et confirmer.
Tu peux aussi voir si l'autre application ne gère pas DDE ou autre moyen de
communication interprocess...

--
François Picalausa (MVP VB)
FAQ VB : http://faq.vb.free.fr
MSDN : http://msdn.microsoft.com


"Philippe Halet" a écrit dans le message de
news:40190f09$0$768$
Bonjour,

Je désirerai effectuer une opération qui semble assez simple mais pour
laquelle je ne trouve pas de solution: envoyer à une application des
simulations de pression de touche sur le clavier.

Je crois que j'ai deux solutions:
- l'application a le focus: dans ce cas, le simple fait d'envoyer des
caractères dans le buffer clavier devrait suffir
- l'application n'a pas le focus: il faudrait trouver un handle
quelconque sur l'application dont je connais le nom et ensuite de lui
faire croire (!!) que des touches ont été pressée...

Toute autre idée est la bienvenue évidement...

Quelqu'un peut-il m'aider à ce sujet?

Merci d'avance,

Philippe


Avatar
Pascal B.
Salut, Philippe,

Il y a une instruction en VB qui est SendKeys
Voici un exemple tiré de MSDN:

Dim ReturnValue, I
ReturnValue = Shell("calc.exe", 1) ' Run Calculator.
AppActivate ReturnValue ' Activate the Calculator.
For I = 1 To 100 ' Set up counting loop.
SendKeys I & "{+}", True ' Send keystrokes to Calculator
Next I ' to add each value of I.
SendKeys "=", True ' Get grand total.
SendKeys "%{F4}", True ' Send ALT+F4 to close Calculator.

En espérant que cela t'aide.
Pascal

"Philippe Halet" a écrit dans le message de
news:40190f09$0$768$
Bonjour,

Je désirerai effectuer une opération qui semble assez simple mais pour
laquelle je ne trouve pas de solution: envoyer à une application des
simulations de pression de touche sur le clavier.

Je crois que j'ai deux solutions:
- l'application a le focus: dans ce cas, le simple fait d'envoyer des
caractères dans le buffer clavier devrait suffir
- l'application n'a pas le focus: il faudrait trouver un handle quelconque
sur l'application dont je connais le nom et ensuite de lui faire croire


(!!)
que des touches ont été pressée...

Toute autre idée est la bienvenue évidement...

Quelqu'un peut-il m'aider à ce sujet?

Merci d'avance,

Philippe





Avatar
ng
Salut,

Tu peux aussi trouver le hWnd de la fenêtre voir du textbox en question puis
faire un SetText.

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
"Philippe Halet" a écrit dans le message de news:
40190f09$0$768$
Bonjour,

Je désirerai effectuer une opération qui semble assez simple mais pour
laquelle je ne trouve pas de solution: envoyer à une application des
simulations de pression de touche sur le clavier.

Je crois que j'ai deux solutions:
- l'application a le focus: dans ce cas, le simple fait d'envoyer des
caractères dans le buffer clavier devrait suffir
- l'application n'a pas le focus: il faudrait trouver un handle quelconque
sur l'application dont je connais le nom et ensuite de lui faire croire


(!!)
que des touches ont été pressée...

Toute autre idée est la bienvenue évidement...

Quelqu'un peut-il m'aider à ce sujet?

Merci d'avance,

Philippe