Leptis
Messages postés17Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention26 juillet 2007
-
8 déc. 2005 à 15:01
Leptis
Messages postés17Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention26 juillet 2007
-
9 déc. 2005 à 18:23
salut à tous les pro de la prog et les autres. Je vous prévien tout de
suite je n'ai pas un niveau tres trerible en cpp mais j'arrive toute
fois a faire quelques truc comme ce prog qui qui est cencé simuler les
touches du clavier et tester toutes les posiblités. Il marche tres bien
les 1600 premieres fois mais dans les environs de ce nombre il se met a
délirer et a taper nimporte quoi. J'ai essayé bien des configuration
mais il y a toujour ce probleme. Merci a tous ce qui serons résoudre ce
délica problème.
le prog et en deux parti l'executable et un fichier texte composé de
-1
-1
-1
-1
-1
-1
-1
0
voici le code de l'executable
#include
#include
#include
#include
#include
#include
#include
#include
#include
void fonction(int varfonction)
{
if(varfonction == 0)
{
keybd_event(VK_SPACE,0x20,0,0);
keybd_event(VK_SPACE,0x20,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 1)
{
keybd_event('A',0,0,0);
keybd_event('A',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 2)
{
keybd_event('B',0,0,0);
keybd_event('B',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 3)
{
keybd_event('C',0,0,0);
keybd_event('C',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 4)
{
keybd_event('D',0,0,0);
keybd_event('D',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 5)
{
keybd_event('E',0,0,0);
keybd_event('E',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 6)
{
keybd_event('F',0,0,0);
keybd_event('F',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 7)
{
keybd_event('G',0,0,0);
keybd_event('G',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 8)
{
keybd_event('H',0,0,0);
keybd_event('H',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 9)
{
keybd_event('I',0,0,0);
keybd_event('I',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 10)
{
keybd_event('J',0,0,0);
keybd_event('J',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 11)
{
keybd_event('K',0,0,0);
keybd_event('K',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 12)
{
keybd_event('L',0,0,0);
keybd_event('L',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 13)
{
keybd_event('M',0,0,0);
keybd_event('M',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 14)
{
keybd_event('N',0,0,0);
keybd_event('N',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 15)
{
keybd_event('O',0,0,0);
keybd_event('O',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 16)
{
keybd_event('P',0,0,0);
keybd_event('P',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 17)
{
keybd_event('Q',0,0,0);
keybd_event('Q',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 18)
{
keybd_event('R',0,0,0);
keybd_event('R',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction ==19)
{
keybd_event('S',0,0,0);
keybd_event('S',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 20)
{
keybd_event('T',0,0,0);
keybd_event('T',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 21)
{
keybd_event('U',0,0,0);
keybd_event('U',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 22)
{
keybd_event('V',0,0,0);
keybd_event('V',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 23)
{
keybd_event('W',0,0,0);
keybd_event('W',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 24)
{
keybd_event('X',0,0,0);
keybd_event('X',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 25)
{
keybd_event('Y',0,0,0);
keybd_event('Y',0,KEYEVENTF_KEYUP,0);
return;
}
if(varfonction == 26)
{
keybd_event('Z',0,0,0);
keybd_event('Z',0,KEYEVENTF_KEYUP,0);
return;
}
}
int main()
{
int a =0;
int varfonction = 0;
int vari1;
int vari2;
int vari3;
int vari4;
int vari5;
int vari6;
int vari7;
ifstream fichier;
fichier.open("adresse du fichier texte");
fichier >> vari1 >> vari2 >> vari3 >> vari4
>> vari5 >> vari6 >> vari7 >> a;
fichier.close();
for(int b=0;b
A voir également:
Probleme de boucle qui marche pas au bout d'un certain nombre de tours
vdust
Messages postés43Date d'inscriptionjeudi 16 décembre 2004StatutMembreDernière intervention14 mars 2007 9 déc. 2005 à 00:42
A part la syntaxe (la solution de
vecchio56 est la plus efficace et la plus portable), revenons au
problème initial. Ce qu'il faut bien comprendre, c'est que l'envoi d'un
évément et son traitement par le système sont asynchrones : l'événement
est placé dans une pile en attendant d'être traité... on ne sait pas a
priori quand. Or, ton programme tourne en continu et va envoyé très
probablement les événements plus vite que le système ne peut les
traiter (d'autant qu'il solicite de manière intensive le processeur
pendant tout le processus). La pile se retrouve donc rapidement saturée
(vers la boucle 1600 ???) et tous les messages qui ne peuvent pas
entrer dans la pile sont tout simplement ignorés (il me semble), ce qui
conduit à la perte de certains messages ; d'où le comportement
constaté. Une solution est de donner à la fin de chaque boucle un peu de temps au système pour traiter les événements envoyés, grâce à la fonction Sleep(nombre_de_millisecondes), placée juste après ta ligne "keybd_event(VK_RETURN,0x1C,0,0);". Je pense que Sleep(5);
est raisonnable (tu peux tenter de réduire encore cette valeur si tu
souhaites que ton programme tourne plus vite. Mais moins le système a
de temps pour traiter les messages, plus les risques de perte
augmentent).
Je n'ai pas testé, mais j'espère que celà solutionnera ton problème.
Une autre remarque si tu utilises (ce qui est pratiquement une
certitude ^^) Windows 2000 ou XP : MSDN préconise l'emploi de la
fonction SendInput à la place de keydb_event sur ces systèmes.
Leptis
Messages postés17Date d'inscriptionmardi 27 septembre 2005StatutMembreDernière intervention26 juillet 2007 9 déc. 2005 à 17:41
Avant tout merci a tous pour vos réponse. Pour repondre a vdust j'avais deja pensé a une surcharge du proc et j'avais mis un wait une seconde et au bout de 26 minutes (1600 boucles) toujour le meme probleme. J'ai meme pensé a une saturation
de la ram voila pourquoi le prog s'eteind et ce relance au bout de mille combinaisons. J'ai essayé les sendInput mais le prob persite.