Simuler une entrée keybd

Résolu
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006 - 23 juil. 2004 à 13:46
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 - 23 juil. 2004 à 15:41
Salut,

J'ai besoin de simuler une saisie clavier sous Delphi, afin d'appeler une macro d'un programme externe.
Peux pas utiliser de batch, malheureusement, j'ai vraiment l'impression d'être obligé de passer par le clavier (ou de faire comme si, d'où ma question)...

Me lancez pas de tomates, je suis pas bon, mais croyez-moi j'y mets de la bonne volonté, pourtant... ;-)

A+

PS : Japee, si tu me lis, ta réponse d'hier n'a pas été inutile, elle m'a permis de préciser ou d'améliorer qques trucs dans le .bat de DATAPLOT avant de le lancer en auto à partir de Delphi... Merci encore ! :-))

7 réponses

jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
23 juil. 2004 à 15:07
en fesant un sleep(2000) ca marcherait peut etre non?
3
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
23 juil. 2004 à 14:28
Ca se complique...

J'ai essayé tout bêtement en utilisant keybd_event, et effectivement, keybd_event, ça marche..................sauf dans mon cas. :-(

cad que je peux simuler des frappes clavier ss pb (j'ai essayé avec un windows+M pour voir), mais par contre si je veux simuler la saisie de la ligne de commande dans mon prg externe, il veut rien entendre...
Ce qui est bizarre, c'est que sa fenêtre est bien activée, puisque qd je tapes directement au clavier la commande, sans toucher à rien depuis que l' exe. Delphi a tourné, c'est bien pris en compte par le prg externe.
Par contre quand je simule cette frappe par Delphi, le prg ext. l'ignore...

Il m'en veut, non ???
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
23 juil. 2004 à 14:29
Voici par exemple comment simuler un Ctrl+C :
KeyBD_event(vk_Control, $45, KeyEventf_ExtendedKey Or 0, 0);
KeyBD_event(67, $45, 0, 0);
KeyBD_event(67, $45, KeyEventf_KeyUp, 0);
KeyBD_event(vk_Control, $45, KeyEventf_ExtendedKey Or KeyEventf_KeyUp, 0);

A+,
JMP.
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
23 juil. 2004 à 14:31
Desole mais tu avais venais juste d'inserer ton message en meme temps que j'envoyais le mien. Mais desole je vois pas comment resoudre ton probleme.

Sorry...
++
0

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

Posez votre question
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
23 juil. 2004 à 15:01
Merci JMP, je crois que tu peux quand même encore m'aider.

J'ai compris (enfin je crois...) d'où vient le pb. En fait quand je lance l'appli ext. sous Delphi, elle met un peu de temps pour s'ouvrir, et comme je simule la frappe de ma commande juste après, en fait la fenêtre ext. est pas encore ouverte que la commande est déjà tapée, et c'est là qu'est l'os, comme on dit...

Alors si qq'un a une idée très simple pour que j'insère entre deux un petit truc qui prend du temps, juste une ou deux sec. le temps que la fenêtre du prg ext. s'ouvre, et avant que je lance mes keybd_event...
Je lui ferais bien trigonaliser des matrices 10000*10000 pour l'occuper un peu, ou encore chercher un moyen de faire gagner l'OM, mais là je risque de perdre trop de temps, et en plus ça me fait ch...

Bref je sais que c'est une demande pas banale, mais bon...

A+, et merci pour votre aide !!!
0
la_gavorade Messages postés 23 Date d'inscription jeudi 22 juillet 2004 Statut Membre Dernière intervention 30 juin 2006
23 juil. 2004 à 15:36
Merci bcp JMP, effectivement le Sleep() c'est mieux qu'une triangularisation... ;-)

Et en plus ça marche !

Une dernière question pendant que tu es là, il me manque plus qu'un truc pour finaliser ma routine : c'est quoi le code touche virtuelle pour le point (.) ???
Petite précision, je suis sur un portable, sans pavé num., donc VK_DECIMAL ça marche pas (ce serait trop facile...)

Merci pour ton aide précieuse.

A+ !
0
jmp77 Messages postés 1119 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 4 octobre 2006 7
23 juil. 2004 à 15:41
La valeur ascii du point (.) est chr(110).

Bonne prog,
JMP.
0
Rejoignez-nous