begin process at 2012 05 30 02:45:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

keybd_event


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

keybd_event

jeudi 13 mars 2008 à 14:39:22 | keybd_event

beb_aij_hi

salut.
j'essaye de simuler une frappe clavier avec keybd_event et il y a un truck qui m'echappe.

voici un bout de code:

#include <windows.h>
#include <SDL/SDL.h>

int main(int argc, char *argv[])
{
SDL_Delay(10000);
keybd_event(0x60,0,0,0);
SDL_Delay(10000);
keybd_event(0x60,0,KEYEVENTF_KEYUP,0);
}

d'apres ce que j'ai compris
keybd_event(0x60,0,0,0);
SDL_Delay(10000);
keybd_event(0x60,0,KEYEVENTF_KEYUP,0);

devrais simuler l'appuis sur la touche0, attendre 10s puis relacher la touche. mais malheureusement quand je le teste sur le bloc note ça ne marque qu'un seul 0 alors que je souhaite que ça continue a marquer des 0 tant que je n'ai pas relacher la touche.

voyez vous ou est l'erreur dans le code?
jeudi 13 mars 2008 à 15:00:26 | Re : keybd_event

rt15

Membre Club Administrateur CodeS-SourceS
Salut,

Pas le temps de voir ça en détail, mais si tu ne t'en sors pas avec keybd_event, tu peux utiliser PostMessage avec des WM_KEYDOWN.

vendredi 14 mars 2008 à 13:14:06 | Re : keybd_event

beb_aij_hi

je ne souhaite pas changer de fonction je cherche a resoudre ce probleme plutot que d'abandoner cette fonction...
si vous avez des idées...
vendredi 14 mars 2008 à 17:06:19 | Re : keybd_event

rt15

Membre Club Administrateur CodeS-SourceS
Bon bon...

Quand on garde appuyer, une série de WM_KEYDOWN est envoyée à l'appli qui a le focus.

On va donc utiliser keybd_event plusieurs fois.
#include <windows.h>

#pragma comment(linker, "/entry:main")
int _cdecl main()
{
int nStart;

// Pour laisser le temps de changer de fenêtre
Sleep(2000);

nStart = GetTickCount();
do
{
keybd_event(0x60, 0, 0, 0);
Sleep(1);
}
while (GetTickCount() - nStart < 10000);

keybd_event(0x60, 0, KEYEVENTF_KEYUP, 0);
return 0;
}

dimanche 16 mars 2008 à 21:16:50 | Re : keybd_event

beb_aij_hi

dsl mais là tu ne fait que simuler plusieurs appuis sur la meme touche.
je souhaite vraiment simuler un maintien de la touche en question.
en gros si tu vas modifier la frequence de repetition dans les option clavier tu changeras aussi la frequence simulé, ce qui n'est pas le cas sur ta solution.
lundi 17 mars 2008 à 12:16:49 | Re : keybd_event

rt15

Membre Club Administrateur CodeS-SourceS
Alors là, oui mais non. Je crois que pour ce que tu veux faire, il faut que tu passe entre le clavier et Windows, ce que tu ne pourra probablement surtout pas faire avec keyb_event, SendMessage ou autre fonction courante.

Nettement plus simple de faire comme j'ai fait plus haut. Et presque même résultat, à la vitesse de répétition près il est vrai... Mais bon, ça doit se trouver dans le registre.

Quand l'utilisateur appuie sur les touches du clavier, Windows envoie des messages à l'application qui a le focus. Tu peux utiliser spy++ fournit avec Visual Studio pour intercetper les messages et voir précisément ce qui est envoyé à l'application. Tu verras que c'est côté Windows que la répétition est gérée.



Cette discussion est classée dans : sdl, event, keybd, delay, 0x60


Répondre à ce message

Sujets en rapport avec ce message

pb keybd_event [ par mat74 ] salut a ts ,j'utilise la fonction keybd_event(num touche, 0, 0, 0); pr simuler des touches a,b,c ... , la sa marche tres bien . Mais j'aimerai bien s Simulation Clavier (keybd_event) --- URGENT ! [ par Omeya ] Bonjour,J'essaye de simuler des touches de clavier avec mon programme, en utilisant la commande : keybd_event (13,0,0,0); keybd_event (13,0,KEYEVENTF_ probleme avec keybd_event [ par kornetmuse ] salut tout le monde.. j'apprend a me servir de keybd_event mais comprend pas tout ^o)j'ai ecris ca dans mon code C if (keybd_event(27,0,0,0)) SDL: La commande printf(""); n'affche rien! [ par yugiohjcj ] Bonjour,voici la source de mon programme:#include #include #include #define true 1int main(int argc, char *argv[]){ printf("\a"); if ( SDL_Init keybd_event et sleep [ par Xentor609 ] salut,J'utilise keybd_event pour simuler des touches du clavier.Juste qu'ici, j'ai aucun problème.Mais imaginons que j'utilise un sleep juste après, l Build Error avec Dev-Cpp + SDL [ par Rouliann ] Salut tout le monde!Alors voila le probleme, g tapé un code tt simple en C++ avec la SDL et le compilateur me dit : C:\Dev-Cpp\...\Makefile.win [Build Probleme avec VK_.... ( balayage clavier ) [ par morgandetoi06 ] voila j aimerait simuler l appui des touches "alt" + "="mais je ne trouve pas le code de la touche "="( elle est située à gauche du backspace )voila l [debutant] keybd_event [ par socksucks ] Salut à tous,Pour un projet c, j'ai besoin d'une fonction qui intercepte les touches F1...F12 du clavier pour que lorsque l'utilisateur presse une de sdl et clavier [ par scawf ] Bonjour, j ai un petit probleme avec SDL et la gestion du clavier.. je met: while(done == 0) { //... while ( SDL_PollEvent(&event) )  { if ( event.typ problème pour simuler touches [ par jeromedu94 ] bonjour,je voudrais simuler les touches windows et D pour aller sur le bureau, j'ai essayer ça mais ça ne marche pas et je ne vois pas pourquoi, si qu


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,858 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales