OVH Cloud OVH Cloud

Remplacer sendkeys

3 réponses
Avatar
JEROME BUNEL
Bonjour, je pense que le sujet interressera beaucoup de monde ...

Quelqu'un connait il un moyen de générer des commandes clavier à destination
d'une application précise ( en connaissant son handle par exemple) et non
pas à la fenêtre qui a le focus comme le fait la fonction SendKeys.

Actuellement, j'utilise plusieurs API windows pour :
1) recupérer le handle de l'application cîble
2) donner le focus à cette application
Puis j'utilise SendKeys pour envoyer mes commandes (je déclenche des
commandes du menu de cette appli)
Ce mécanisme n'est pas du tout sûr, car il y à un tas de raison pour que
l'application cîble perde le focus et que les frappes clavier générer par
SendKeys aboutissent vers une autre application.


Merci

3 réponses

Avatar
Picalausa François
Hello,

En fonction des cas, le message WM_SETTEXT (ou SetWindowsText) peut être
utilisé. (par exemple, sur un contrôle "Edit", ça marche)
Sinon, par WM_CHAR et/ou WM_KEYUP, WM_KEYDOWN.

--
Picalausa François
"JEROME BUNEL" a écrit dans le message de news:
431afbff$0$2315$
Puis j'utilise SendKeys pour envoyer mes commandes (je déclenche des
commandes du menu de cette appli)
Ce mécanisme n'est pas du tout sûr, car il y à un tas de raison pour que
l'application cîble perde le focus et que les frappes clavier générer par
SendKeys aboutissent vers une autre application.


Avatar
BUNEL Jérôme
stp aurais tu un example d'utilisation des ces api car je comprends pas du
tout comment ca marche.
Dans MSDN on trouves les évenements WM_OnKeyUp, WM_OnKeyDown et WM_OnChar
mais je n'ais pas trouvé ( ou pas compris ) de méthodes permettant de
générer ces commandes clavier.
Merci @+

"Picalausa François" a écrit dans le message de news:

Hello,

En fonction des cas, le message WM_SETTEXT (ou SetWindowsText) peut être
utilisé. (par exemple, sur un contrôle "Edit", ça marche)
Sinon, par WM_CHAR et/ou WM_KEYUP, WM_KEYDOWN.

--
Picalausa François
"JEROME BUNEL" a écrit dans le message de news:
431afbff$0$2315$
Puis j'utilise SendKeys pour envoyer mes commandes (je déclenche des
commandes du menu de cette appli)
Ce mécanisme n'est pas du tout sûr, car il y à un tas de raison pour que
l'application cîble perde le focus et que les frappes clavier générer par
SendKeys aboutissent vers une autre application.






Avatar
Picalausa François
Bonjour,

Les message WM_KEYUP, WM_KEYDOWN et autres peuvent être envoyés à une
fenêtre spécifique dont tu connais l'hWnd à l'aide de l'api SendMessage.

Ces messages sont définis comme suit:
Private Const WM_KEYFIRST = &h100
Private Const WM_KEYDOWN = &h100
Private Const WM_KEYUP = &h101
Private Const WM_CHAR = &h102
Private Const WM_DEADCHAR = &h103
Private Const WM_SYSKEYDOWN = &h104
Private Const WM_SYSKEYUP = &h105
Private Const WM_SYSCHAR = &h106
Private Const WM_SYSDEADCHAR = &h107
Private Const WM_UNICHAR = &h109
Private Const WM_KEYLAST = &h109

Pour trouver la fenêtre, les API FindWindow/FindWindowEx seront utiles,
ainsi que l'utilitaire Spy++ (spyxx.exe), fournis avec Visual Studio ainsi
qu'avec le Platform SDK.

L'envoi du message se fera, par exemple, comme ceci:
SendMessage Text1.hwnd, WM_CHAR, Asc("A"), ByVal 0&

A noter toutefois que si pour une textbox un 0& sera accepté comme wParam,
il n'en va pas de même pour toutes les fenêtres. La documentation indique
clairement comme bien former ce type de messages :
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/keyboardinput/keyboardinputreference/keyboardinputmessages/wm_char.asp

--
Picalausa François

"BUNEL Jérôme" a écrit dans le message de news:
4326e15a$0$7829$
stp aurais tu un example d'utilisation des ces api car je comprends pas du
tout comment ca marche.
"Picalausa François" a écrit dans le message de
news:
En fonction des cas, le message WM_SETTEXT (ou SetWindowsText) peut être
utilisé. (par exemple, sur un contrôle "Edit", ça marche)
Sinon, par WM_CHAR et/ou WM_KEYUP, WM_KEYDOWN.
"JEROME BUNEL" a écrit dans le message de news:
431afbff$0$2315$
Puis j'utilise SendKeys pour envoyer mes commandes (je déclenche des
commandes du menu de cette appli)
Ce mécanisme n'est pas du tout sûr, car il y à un tas de raison pour que
l'application cîble perde le focus et que les frappes clavier générer
par SendKeys aboutissent vers une autre application.