Oppure

Loading
29/06/11 6:51
jimmypatane
Ho un problema all'apparenza banale, ma il fatto di non essere ancora sufficientemente pratico con vb.net lo rende insormontabile.

Ho bisogno di sapere quando il mouse si sta muovendo e soprattutto quando è fermo. Ai 2 eventi devo associare l'avvio e lo spegnimento di un timer in modo da ottenere questo efetto:
quando il mouse è fermo il timer parte e se arriva alla fine del conteggio chiude il form, quando il mouse si muove, invece, spegne il timer che si riattiverà solo quando il mouse non si muove più.

Il movimento del mouse lo intercetto con Form1.MouseMove, ma quando si ferma?
Come faccio ad intercettare l'evento?

Spero di essere stato chiaro.
Grazie
aaa
29/06/11 7:57
walker93
dovresti usare un 2° timer attivo sempre che controlla tutte le volte la posizione del mouse, se è uguale a quella memorizzata nel tick precedente allora non si è mosso, altrimenti si è spostato, e puoi anche capire in che direzione e di quanti pixel...

quindi non ti servirebbe nemmeno l'evento mousemove...
aaa
29/06/11 12:57
Goblin
Io userei i messaggi di windows per testare le coordinate del mouse con una variabile che si aggiorna di volta in volta, se le coordinate della variabile e del mouse corrispondono vuol dire che il mouse è fermo.
L'unica pecca potrebbe essere (non ne sono sicuro), che l'evento WM_MOUSEMOVE avviene anche fuori dall'applicativo, cmq prova a vedere su MSDN cosa dicono ...
msdn.microsoft.com/en-us/library/…
G.
Ibis redibis non morieris in bello
29/06/11 15:05
Goblin
@walker93
Non voglio minimamente mettere in dubbio la tua soluzione, ma le due proposte non mi sembrano uguali, diciamo che ( "forse" Vedi evento WM_MOUSEMOVE) giungono allo stesso risultato, ma nel tuo caso c'e' un timer aggiuntivo che gira in mezzo all'applicazione, nel caso di uso di API ci pensa il gestore di messaggi a processare la posizione del mouse, l'utente deve solo fare un controllo, ossia non c'e' codice rindondante.
Come ho detto non voglio sminuire la tua soluzione, ho dato solo lo spunto per una soluzione alternativa, adesso jimmypatane faccia le valutazioni del caso e in base a quelle può scegliere l'una o l'altra, non voglio soffermarmi su PRO/CONTRO nell'uso di una tecnica piuttosto che un altra.
G.
Ibis redibis non morieris in bello