API SOUCIS

Résolu
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011 - 18 août 2008 à 12:02
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011 - 19 août 2008 à 16:00
Salut,
J'avais pour habitude de controler un de mes programmes avec l'api POSTMESSAGE
pour simuler l'utilisation du clavier mais seulement voila aprés une mise à jour du soft cet API ne fonctionne plus.maintenant j'ai pus constater que :

aa=prog
Call SendMessageByNum(aa, WM_KEYDOWN, vbKeyDown, 0&)
Call SendMessageByNum(aa, WM_KEYUP, vbKeyDown, 0&)

fonctionne , le seul hic c'est que ca marche une fois sur deux voir au ralentis.
Auriez vous une solution a ce probleme ou bien un autre api ? apparament ce soft prend enormement en capacité cpu et c'est peut etre la cause de mon soucis.
Par avance merci

7 réponses

gillardg Messages postés 3275 Date d'inscription jeudi 3 avril 2008 Statut Membre Dernière intervention 14 septembre 2014 2
18 août 2008 à 12:22
DoEvents  ??

Bonjour chez vous !
3
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
18 août 2008 à 12:47
Merci pour votre réponse, j'ai trouvé GetInputState et ca marche impec :
Private Declare Function GetInputState Lib "user32" () As Long

For i = 1 To 2000

If GetInputState Then DoEvents
Call PostMessage(aa, WM_KEYDOWN, vbKeyDown, 0&) 'DOWN
Call PostMessage(aa, WM_KEYUP, vbKeyDown, 0&)
Next i
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
18 août 2008 à 12:58
Salut,

C'est quoi ce 2000 ? Et plus généralement, c'est quoi cette boucle !!!

Utilise l'API keybd_event plutôt que postmessage pour la simulation des touches du clavier !
______________________________________
DarK Sidious
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
18 août 2008 à 14:26
Merci DARKSIDIOUS
ce code proviens d'un compteur bref mon code donne ca :
aa=prog
Call SendMessageByNum(aa, WM_KEYDOWN, vbKeyDown, 0&)
Call SendMessageByNum(aa, WM_KEYUP, vbKeyDown, 0&)

avec keybd_event ca me donne quoi ? car j'ai fait quelques test et ca me donne une erreur OVERFLOW
0

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

Posez votre question
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
18 août 2008 à 19:24
Je revien a la charge avec mon code:
aa= programme
Call SendMessageByNum(aa, WM_KEYDOWN, vbKeyDown, 0&) 'DOWN
Call SendMessageByNum(aa, WM_KEYUP, vbKeyDown, 0&)

Voila comme annoncé sur mon premier post auparavant j'utilisé POSTMESSAGE pour la manip d'un programme depuis une mise a jours de ce soft cet API ne marche plus.A ma trés grande surprise SendMessageByNum fonctionne mais au ralentis ou une fois sur deux, Une chose étrange que je viens de constater est que au moment de l'envoye du SendMessageByNum si je click n'importe ou ailleur du prog que je manipule l'envois de touche ce fait de plus en plus réactif donc plus éfficace . POuvez vous m'expliquer cela svp ?
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
19 août 2008 à 14:06
Je continu avec mon histoire donc keybdevent ne marche pas avec mon aplis par contre si je fait le code suivant ca ne marche pas :

Call SendMessageByNum(aa, WM_KEYDOWN, vbKeyDown, 0)
Call SendMessageByNum(aa, WM_KEYUP, vbKeyDown, 0)

Si maintenant je fait uniquement ca ca marche impec en plus tres reactif mais l'action est repetitif :

Call SendMessageByNum(aa, WM_KEYDOWN, vbKeyDown, 0)

Si je fait ceci:

Call SendMessageByNum(aa, WM_KEYDOWN, vbKeyDown, 0)
pause 0#
Call SendMessageByNum(aa, WM_KEYUP, vbKeyDown, 0)

ca marche mais le soucis c'est au ralentis, donc si vous avez une solution pour moi et me donner votre avis sur ce soucis, n'hésitez pas.
Cordialement
0
marty14 Messages postés 104 Date d'inscription lundi 21 août 2006 Statut Membre Dernière intervention 29 mai 2011
19 août 2008 à 16:00
Bah oué tu avais raison:) merci beaucoup .
Call SendMessageByNum(aa, WM_KEYDOWN, vbKeyDown, 0&): DoEvents
Call SendMessageByNum(aa, WM_KEYUP, vbKeyDown, 0&)
0
Rejoignez-nous