J'ai besoin de simuler des appuis de touches dans plusieurs applications lancées en même temps, à partir d'un petit programme tout con. J'utilisais jusqu'ici
SendInput, qui fonctionne, mais qui oblige à donner au préalable le focus à l'application ciblée. Du coup dans mon cas j'ai des fenêtres qui vont et viennent, ça clignote, c'est moche (sans compter qu'en plus le PC devient inutilisable puisque l'utilisateur ne doit pas interférer au risque de faire envoyer les touches à une mauvaise application).
Du coup j'aimerais plutôt utiliser
SendMessage (ou PostMessage, peu importe) pour lui spécifier le HWND de la fenêtre à laquelle les touches doivent être envoyées.
Mais je ne dois pas avoir compris comment ça fonctionne, puisque même un code tout con comme ça ne produit aucun effet :
HWND hWnd = FindWindow (/* notepad */);
/* ici mon hWnd est valide, si je récupère par exemple le titre de la fenêtre, c'est bien notepad */
SendMessage (hWnd, WM_KEYDOWN, VK_RETURN, 0);
SendMessage (hWnd, WM_KEYUP, VK_RETURN, 0);
J'aurais pensé que ce truc écrirait un retour à la ligne dans mon notepad ouvert (et dont la boite de texte avait le focus), mais il ne se produit strictement rien, bien que le code de retour de SendMessage soit 0 (donc le message a bien été envoyé).
Est-ce que je suis passé à côté de quelque chose d'évident, genre il faudrait envoyer directement à la textbox et non pas à la fenêtre pour que ça fonctionne (auquel cas cette fonction serait inutilisable), ou bien un problème de droits (je suis sous Windows 7, 64 bits si ça change qqchose), ou bien... ?
Merci pour vos lumières
