le simple fait de mettre placer un point d'arrêt en runtime, déplace la souris..
A noter que si ta souris reste dans le mémo, le onmousmove ne se déclenche que si tu en sors..
Pour ce faire il faut répéter l'évènement également sur le OnMousMove du mémo.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionvar Done: Boolean; procedure TForm1.Memo1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Memo1.Lines.Append(Format('x %d y %d', [x, y])); Done := not Done; if Done then Memo1.Lines.Append('done'); end;
Memo1.Lines.Append(Format('%sMouseMove at %s', [(Sender as TControl).Name, TimeToStr(Now)]));
var Limit : integer = 0; procedure TFormX.TrucMouseMove(Sender: TObject;X,Y: integer); begin if Limit > 4 then exit; inc(Limit); faireUnBidule(X, Y); end; procedure TFormX.FaireUnBidule(X, Y: integer); begin Self.Caption := Format('%d x %d',[X,Y]); end;
« C'est WinAmp qui provoque OnMouseMove dans mon appli, dès qu'il est en mode lecture. »
« L'intervalle est d'environ 1 seconde entre 2 évènements OnMouseMove. »
« Et remet en cause la fiabilité de la gestion du multitache par krosoft. »
Je me demande si OnMouseMove n'est pas mal nommé.
En fait ça a l'air de réagir davantage aux mouvements du curseur sur l'écran q'aux réels mouvements de la souris
« Car en effet, lequel des message envoyé par WinAmp peut bien être interprété par Windows comme un message venant de la souris ? »
mouse_event(MOUSEEVENTF_MOVE, 1, 1, 0, 0);
C'est d'ailleurs le seul moyen que je connaisse pour empêcher la mise en veille. Mais si quelqu'un connais une autre méthode, ça m'intéresse...
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 0, 0, SPIF_SENDWININICHANGE);
SystemParametersInfo(SPI_SETSCREENSAVEACTIVE, 1, 0, SPIF_SENDWININICHANGE);
var Status: Boolean; begin SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, @Status, 0); // si Status retourne True, la mise en veille est active end;