Envoi un code touche a une apli par son hwnd

Signaler
Messages postés
78
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
15 novembre 2018
-
Messages postés
78
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
15 novembre 2018
-
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

Messages postés
15814
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
126
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à ?
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
Possibilité dans le cas du bloc-notes d'envoyer un WM_COMMAND avec wParam = 2

Renfield
Admin CodeS-SourceS- MVP Visual Basic
Messages postés
78
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
15 novembre 2018

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
Messages postés
17288
Date d'inscription
mercredi 2 janvier 2002
Statut
Modérateur
Dernière intervention
27 septembre 2021
70
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
Messages postés
78
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
15 novembre 2018

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