Imposer l'appui d'une touche ou d'un click [Résolu]

Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
- - Dernière réponse : jimy neutron
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
- 19 avril 2007 à 14:19
Bonjour à tous,

Je suis en train de développer une appli de control à distance avec Winsock( dans la plus grande déontologie...)  et j'utilise cette fonction:

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

pour connaitre quelle touche a été enfoncer, jusque là tout va bien! Mais sur l'appli client, je ne parviens pas à trouver la fonction inverse de "GetAsyncKeyState" pour simuler l'appui d'une touche ou d'un click souris.

Novice ( et un peu perdu...)dans l'utilisation des DLL, j'ai essayer sans succés "SetAsyncKeyState"

Quelqu'un connaitrait-il la soluce?

Merci à tous

PS: Où peut on trouver toutes les fonctions d'une DLL comme "USER32"?
Afficher la suite 

Votre réponse

10 réponses

Meilleure réponse
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
3
Merci
Merci pour tous Violent Ken, ça marche tres bien

@+

Jimy

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 140 internautes nous ont dit merci ce mois-ci

Commenter la réponse de jimy neutron
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
0
Merci
Violent Ken
Salut, voilà comment faire (exemple de API guide) :

Const VK_H = 72
Const VK_E = 69
Const VK_L = 76
Const VK_O = 79
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Private Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Private Sub Form_KeyPress(KeyAscii As Integer)
   'Print the key on the form
   Me.Print Chr$(KeyAscii);
End Sub<hr />Private Sub Form_Paint()
   'KPD-Team 2000
   'URL: http://www.allapi.net/
   'E-Mail: KPDTeam@Allapi.net
   'Clear the form
   Me.Cls
   keybd_event VK_H, 0, 0, 0  ' press H
   keybd_event VK_H, 0, KEYEVENTF_KEYUP, 0  ' release H
   keybd_event VK_E, 0, 0, 0 ' press E
   keybd_event VK_E, 0, KEYEVENTF_KEYUP, 0 ' release E
   keybd_event VK_L, 0, 0, 0 ' press L
   keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0 ' release L
   keybd_event VK_L, 0, 0, 0 ' press L
   keybd_event VK_L, 0, KEYEVENTF_KEYUP, 0 ' release L
   keybd_event VK_O, 0, 0, 0 ' press O
   keybd_event VK_O, 0, KEYEVENTF_KEYUP, 0 ' release O
End Sub<hr />, ----
By Renfield
@+

Hex Editor VB
Commenter la réponse de violent_ken
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
0
Merci
Violent Ken
Au fait j'oubliais : pour obtenir le nom de toutes les fonctions de par exemple User32.dll, ouvre la dll avec l'utilitaire dependecy walker (fourni avec VB6, nommé DEPENDS.exe)

@+

Hex Editor VB
Commenter la réponse de violent_ken
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
0
Merci
Merci pour tout Violent Ken,
@+
Commenter la réponse de jimy neutron
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
0
Merci
En effet, DEPENDS permet de voir le contenu d'une DLL, mais comment peut on connaitre l'utilisation et l'utilité de chaque fonction...L'exemple de USER32 compte pas moins de  Fonctions, c'est a y perdre son latin...comment savoir la syntaxe a utilisé pour chacune d'entre elle, y a t il un site dédié, des ouvrages info, ou autres...

J'ai sans doute l'air un peu couillon, mais jusqu'a l'heure, j'utilisé les codes trouvé sur le site, mais je voudrais comprendre tout ce que je fais...

Merci
Commenter la réponse de jimy neutron
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
Commenter la réponse de violent_ken
Messages postés
420
Date d'inscription
lundi 30 août 2004
Statut
Membre
Dernière intervention
28 janvier 2008
0
Merci
    pour simuler l'appuie d'une touche pourquoi pas un sendkeys ? tu envoie ta donnee a distance par socket genre
sendkeys.h (h serais la lettre a simuler la pression) une fois arrivee dans le data arrivals de l'exe a distance hop tu split avec le . (ou tu utilise une touche ascii bizzard pour pas ne pas pouvoir simuler un .)
une fois fait tu fais le code genre (en prennant que ta un tableau() et que les donnee arrive dans le data)

dim tableau() as string
dim data as string

tableau = split(data, ".")

sendkeys tableau(1)

voila en esperant t'avoir eclairer ^^
Commenter la réponse de diablamanshadow
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
0
Merci
Violent Ken
"pour simuler l'appuie d'une touche pourquoi pas un sendkeys" ==> sans doutes pour la même raison que ce qui l'a poussé à utiliser GetAsyncKeyState plutôt que l'évenement KeyPress...
@+
Hex Editor VB
Commenter la réponse de violent_ken
Messages postés
491
Date d'inscription
mercredi 1 février 2006
Statut
Membre
Dernière intervention
18 novembre 2016
1
0
Merci
Merci a tous  pour vos reponses.
J'ai utilisé la soluce de Violent Kent (Keybd_event..)et cela fonctionne tres bien pour simuler l'appui de touche, par contre, la simulation des clicks souris, pour exemple "Keybd_event 1,0,0  '(VbLeftButton=1) ne fonctionne pas....
Commenter la réponse de jimy neutron
Messages postés
1822
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
0
Merci
Violent Ken
Aller, pendant que j'y suis : (pour la souris)

'Before you start this program, I suggest you save everything that wasn't saved yet.
Private Declare Sub mouse_event Lib "user32" (ByVal dwFlags As Long, ByVal dx As Long, ByVal dy As Long, ByVal cButtons As Long, ByVal dwExtraInfo As Long)
Const MOUSEEVENTF_LEFTDOWN = &H2
Const MOUSEEVENTF_LEFTUP = &H4
Const MOUSEEVENTF_MIDDLEDOWN = &H20
Const MOUSEEVENTF_MIDDLEUP = &H40
Const MOUSEEVENTF_MOVE = &H1
Const MOUSEEVENTF_ABSOLUTE = &H8000
Const MOUSEEVENTF_RIGHTDOWN = &H8
Const MOUSEEVENTF_RIGHTUP = &H10
Private Sub Form_Activate()
   'KPD-Team 1998
   'URL: http://www.allapi.net/
   'E-Mail: KPDTeam@Allapi.net
   Do
       'Simulate a mouseclick on the cursor's position
       mouse_event MOUSEEVENTF_LEFTDOWN Or MOUSEEVENTF_LEFTUP, 0&, 0&, cButt, dwEI
       DoEvents
   Loop
End Sub , ----
By Renfield

@+ (et pense à valider les réponses qui te conviennent, comme çà le prochain utilisateur qui tombera sur ce post saura directement où trouver les réponses)

Hex Editor VB
Commenter la réponse de violent_ken