Envoi un code touche a une apli par son hwnd

cs_breton51 Messages postés 78 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 15 novembre 2018 - 19 sept. 2006 à 14:49
cs_breton51 Messages postés 78 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 15 novembre 2018 - 20 sept. 2006 à 12:15
bonjour je voudrai envoyer CtrL+O au bloc note
mais voila rien ne se passe
voici mon code ci quelqu'un a une idée



Private

Const vbctrl &H11<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" /??>





Private

Const vbKeyO = &H4F





Private

Const WM_KEYDOWN = &H100





Private

Const WM_KEYUP = &H101






 






Private

Declare
Function PostMessage Lib"user32.dll"Alias"PostMessageA" _






            (ByVal hwnd AsLong, ByVal wMsg AsLong, ByVal wParam AsLong, _






           
ByVal lparam AsLong) AsLong






 






Private

Declare
Function FindWindow Lib"user32"Alias"FindWindowA" _






        (ByVal lpClassName AsString, ByVal lpWindowName AsString) AsLong






 






Private

Declare
Sub Sleep Lib"kernel32" (ByVal dwMillisecondes AsLong)






 






Dim
monhwnd AsLong






 






Private

Sub Command1_Click()






    monhwnd = FindWindow(vbNullString, "Sans tritre - Bloc-notes")






    Sleep(5000)






    PostMessage monhwnd, WM_KEYDOWN, vbctrl, 0






    PostMessage monhwnd, WM_KEYDOWN, vbKeyO, 0






    PostMessage monhwnd, WM_KEYUP, vbKeyO, 0






    PostMessage monhwnd, WM_KEYUP, vbctrl, 0





End

Sub










 

5 réponses

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 131
19 sept. 2006 à 15:17
Fait un petit sleep entre les appels de postmessage (100 ms par exemple).

Sinon, as-tu essayé keybd_event dont le but est de faire cà ?
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
19 sept. 2006 à 15:28
Possibilité dans le cas du bloc-notes d'envoyer un WM_COMMAND avec wParam = 2

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_breton51 Messages postés 78 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 15 novembre 2018
20 sept. 2006 à 11:24
merci pour vos reponce

j'ai regardé keybd_event mais il ne me comvien pas car on ne peut pas decider sur quel hwnd on envoi les données

j'ai testé avec un sleep de 100ms mais rien non plus

j'ai testé avec SendMessage idem rien

Par contre Renfield je ne vois pas pourquoi utiliser WM_COMMAND avec wparam =2 car ce que je veut faire c'est envoyé ctrl+o ou tout autre touche a une aplication donnée bloc note était un exemple par contre une utilité plus présise est:
mon apli control plusieur apli qui fonctionnent sous dos en même temps mon but est de pouvoir envoyé ces codes touches aux différantes aplis quelle soit cacher, minimiser, ou autre.

bonne journée
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 71
20 sept. 2006 à 11:33
tu aurais du être précis dès le départ.... tu demande comment afficher la boite de dialogue de Notepad, on te files l'info....

si tes applis tournent sous DOS, tu dois pouvoir te greffer (Pipe) en entrée, et envoyer tes commandes, comme si tu y était

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_breton51 Messages postés 78 Date d'inscription jeudi 21 avril 2005 Statut Membre Dernière intervention 15 novembre 2018
20 sept. 2006 à 12:15
desolé Renfield

j'ai regardé ton info (Pipe) cela a laire compliquer mais je pense que c'est ce qu'il me faut je cherche l'info et donnerai reponce quand j'aurai la solution

merci
0