Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - problema per registrare il mouse
Forum - C/C++ - problema per registrare il mouse

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
MagoDelC++ (Normal User)
Rookie


Messaggi: 29
Iscritto: 03/05/2010

Segnala al moderatore
Postato alle 16:17
Lunedì, 03/05/2010
salve a tutti ora vi mostro il mio problema sperando che troviate l'errore! allora cercando su internet ho trovato un codice in c++ che mostrava tutte le coordinate del mouse quando si muoveva! allora ho pensato di registrare queste posizioni in un array per poi ripeterle usando le adeguate funzioni! in pratica il mio scopo e registrare i movimenti del mouse e quando il mouse ha coordinata di x=0 di interrompere e di rifare i movimenti che ho fatto! ma il problema e che il codice mi sembra giusto però non funziona!

ecco il codice!
Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. int main()
  5. {
  6.     int x,y,p,o,a;
  7.     double q,w;
  8.     float mousex[500];
  9.     float mousey[500];
  10.     POINT mouse, old_mouse;
  11.     old_mouse = mouse;
  12.  
  13.     while(mouse.x!=0)
  14.     {
  15.         for(a=0;a!=500;a++)
  16.           {
  17.                 if (!GetCursorPos(&mouse));
  18.                 if (mouse.x != old_mouse.x || mouse.y != old_mouse.y)
  19.  
  20.                 mousex[a]=mouse.x;
  21.                 mousey[a]=mouse.y;
  22.  
  23.                 old_mouse = mouse;
  24.           }
  25.     }
  26.  
  27.  
  28.     for(a=0;a!=500;a++)
  29.           {
  30.                 q=mousex[a];
  31.                 w=mousey[a];
  32.                 _sleep(1000);
  33.                 cout<<q<<"  "<<w;
  34.                 SetCursorPos(q, w);
  35.  
  36.           }
  37.  
  38. return 0;
  39. }


PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 19:11
Lunedì, 03/05/2010

cosa intendi per "non funziona"?

che errore da? non compila? compila ma non fa quello che dovrebbe?

PM Quote
Avatar
MagoDelC++ (Normal User)
Rookie


Messaggi: 29
Iscritto: 03/05/2010

Segnala al moderatore
Postato alle 19:37
Lunedì, 03/05/2010
si compila... però quando deve rifare le coordinate lette le fa a caso!! e più o meno utilizza sempre gli stessi numeri come coordinate! tipo quando nn inizzializzi qualcosa!

Ultima modifica effettuata da MagoDelC++ il 03/05/2010 alle 19:38
PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 20:30
Lunedì, 03/05/2010

hai fatto un giro strano senza senso.
perchè memorizzare le coordinate in due vettori di float se sono coordinate intere?

manca la funzione di temporizzazione nella fase di acquisizione, perchè controllare se il mouse si è spostato? e nel caso non si sia spostato NON memorizzare le coordinate?

se il tuo intento è riprodurre i movimenti del mouse, se rimane fermo in un posto per qualche tempo dovresti riprodurre anche questa cosa.

e poi perchè solo 500 campioni? non sarebbe meglio implementare un lista e scegliere di fermare il recording e poi scegliere quando iniziare il playing della traiettoria?

che senso ha la condizione mouse.x != 0? sai che l'origine (0,0) dello schermo è il pixel  più in altro a sinistra?

ci sono un po di cose che non vanno...



PM Quote
Avatar
NickoMaiden (Normal User)
Pro


Messaggi: 115
Iscritto: 10/06/2009

Segnala al moderatore
Postato alle 11:45
Domenica, 09/05/2010
una delle prime cose che mi salta all'occhio è il secondo if dentro il for.
se non metti le graffe succede che l'if vale solo per la prima istruzione mentre le altre vengono eseguite comunque.
per il resto...dovendo memorizzare un numero indefinito di posizioni, non sarebbe meglio usare le liste concatenate semplici invece che un vettore?
edit: hedo non avevo visto il tuo post

Ultima modifica effettuata da NickoMaiden il 09/05/2010 alle 11:46
PM Quote
Avatar
MagoDelC++ (Normal User)
Rookie


Messaggi: 29
Iscritto: 03/05/2010

Segnala al moderatore
Postato alle 19:29
Lunedì, 17/05/2010
ok grazie per i consigli ora il programma funziona! (non uso liste concatenate perchè non so come si fa e non riesco a capirle)!
ora oltre che a registrare volevo sapere come fare a sapere anche come registrare i click del mouse! ho cercato un po in giro ma è troppo complicato parlano tutti di funzioni strane di windows! c'e qualche comando semplice per regisrare quando io clikko oltre che a quando mi muovo?

questo è il codice che registra:

Codice sorgente - presumibilmente C++

  1. #include <iostream>
  2. #include <windows.h>
  3. using namespace std;
  4. int main()
  5. {
  6.     int a,q,w,r,t=0;
  7.     int mousex[50000];
  8.     int mousey[50000];
  9.  
  10.     POINT mouse;
  11.  
  12.  
  13.  
  14. do{
  15.         for(a=0; a!=50000; a++)
  16.         {
  17.         if (!GetCursorPos(&mouse)) return -1;
  18.         _sleep(10);
  19.         mousex[a]=mouse.x;
  20.         mousey[a]=mouse.y;
  21.         cout << "X: " << mouse.x << " - Y: " << mouse.y << endl;
  22.         if(mouse.x==0 && mouse.y==0)
  23.         {break;}
  24.         t++;
  25.         }
  26. }while(mouse.x!=0 && mouse.y!=0);
  27.  
  28.  
  29.     for(r=0;r!=t;r++)
  30.           {
  31.  
  32.               _sleep(10);
  33.                       cout << "X: " <<mousex[r]<< " - Y: " << mousey[r] << endl;
  34.                 SetCursorPos(mousex[r], mousey[r]);
  35.           }
  36.  
  37.     return 0;
  38. }


PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 21:27
Lunedì, 17/05/2010
Testo quotato

Postato originariamente da MagoDelC++:

ok grazie per i consigli ora il programma funziona! (non uso liste concatenate perchè non so come si fa e non riesco a capirle)!
ora oltre che a registrare volevo sapere come fare a sapere anche come registrare i click del mouse! ho cercato un po in giro ma è troppo complicato parlano tutti di funzioni strane di windows! c'e qualche comando semplice per regisrare quando io clikko oltre che a quando mi muovo?




"funzioni strane di windows"? cioè le API?

e ho notato solo ora, il tuo nick è "MagoDelC++". Ma non ti vergogni a mettere un nome del genere? Ma chi ti credi di essere? E se sei tanto "mago del c++" perchè sei qui a postare domande idiote? io rimango allibito davanti a tanta bimbominchiaggine...

avevo una vaga voglia di dirti come si faceva, ma mi è del tutto passata.

per dovere di cronaca, se dipendesse da me, ti bannerei all'istante.

PM Quote
Avatar
MagoDelC++ (Normal User)
Rookie


Messaggi: 29
Iscritto: 03/05/2010

Segnala al moderatore
Postato alle 22:37
Lunedì, 17/05/2010
ahahah! :D :k:
si si lo so che si usavano le api solo che nn avevo voglia di dilungarmi a spiegare che ero incapace a usarle! e sinceramente volevo sapere se c'era un modo piu semplice!
mi sono chiamato cosi nn perchè mi credo bravo! ahhaha figurati ma perchè VORREI essere un mago del c++! :)
so di essere all'inizio!!
dai dammi almeno un aiutino!! per piacere!!! ;)

PM Quote
Avatar
HeDo (Founder Member)
Guru^2


Messaggi: 2765
Iscritto: 21/09/2007

Segnala al moderatore
Postato alle 22:48
Lunedì, 17/05/2010
Testo quotato

Postato originariamente da MagoDelC++:

ahahah! :D :k:
si si lo so che si usavano le api solo che nn avevo voglia di dilungarmi a spiegare che ero incapace a usarle! e sinceramente volevo sapere se c'era un modo piu semplice!
mi sono chiamato cosi nn perchè mi credo bravo! ahhaha figurati ma perchè VORREI essere un mago del c++! :)
so di essere all'inizio!!
dai dammi almeno un aiutino!! per piacere!!! ;)



"registrare" i click del mouse non è affatto semplice, bisogna passare per gli hook di sistema e la faccenda si fa complessa.

Ma a che scopo tutto ciò?

PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo