événement souris

cs_cacoucatatonique Messages postés 164 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 7 octobre 2009 - 19 mars 2007 à 16:11
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 30 mars 2007 à 11:19
bonjour à tous,
je sai que la question que je vai poser se trouve peut etre dans le site mais si c'est la cas je ne l'ai pas trouvé!!
voila, je suis à la recherche d'un bout de code qui me premettrai d'arreter une application indépendante dés que la sourie a une inactivité d'une durée bien définie.
merci d'avance

 cacoucatatonique

4 réponses

Filipe35 Messages postés 470 Date d'inscription vendredi 14 novembre 2003 Statut Membre Dernière intervention 23 octobre 2007 1
19 mars 2007 à 18:09
Salut

Voila une solution (peut-être pas la meilleure mais bon)
Elle est relativement facile à mettre en oeuvre vu les bouts de codes que tu trouveras par-ci par-là.

old_ts => Contient le dernier timestamp
old_pos => Contient la dernière position de la souris

old_ts = '';
old_pos = '';

- Timer toutes les X secondes
    - Récupère la position actuelle de la souris et le timestamp actuel
    - Compare la position de la souris stocké (old_pos)
       - Si différente, on stock le nouveau timestamp (old_ts) et la position de la souris (old_pos)
       - Si identique on compare le timestamp actuel à celui de la variable (old_ts)
          - En fonction du temps écoulé on ferme ou pas l'application souhaitée.

voilou

bon coding, n'hésite pas si ce n'est pas clair.

++

Fil
   

__________________________________________________
http://www.OgameTut.Free.Fr - Le site sur ogame de référence !
http://Signz.free.fr - Le gén&#
cs_cacoucatatonique Messages postés 164 Date d'inscription vendredi 25 février 2005 Statut Membre Dernière intervention 7 octobre 2009
20 mars 2007 à 07:55
salut,
une petite question sur ton code,
Permet'il de détecter les mouvement de souri en dehors du cadre du programme? en faite je vien de voir que j'ai oublier de le specifier mais ce que je cherche c'est à detecter les mouvement de souri globaux, c'est à dire dans la fenettre du programme einsi que à coté de cette fenetre.

 cacoucatatonique
cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
20 mars 2007 à 09:28
Salut,

GetCursorPos, procédure




<hr size= "2" width="100%" />





Renvoie la position du curseur de la souris.

Unité



QControls






Catégorie






utilitaires de gestion de la souris






Syntaxe Delphi :





procedure GetCursorPos(var P: TPoint);




Syntaxe C++ :





extern PACKAGE void __fastcall GetCursorPos(Types::TPoint &P);



Description



Appelez GetCursorPos pour déterminer les coordonnées écran actuelles du curseur de la souris.






Ken@vo



<hr size ="2" width="100%" />



Code, Code, Codec !






[%3C/body
]
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
30 mars 2007 à 11:19
Salut,

C'est quelle appli que tu souhaite fermée ? (= C'est quoi une appli indépendante ?)


Pour fermer une appli que l'on a lancé, il suffit de la lancer avec CreateProcess (Win32) puis d'utiliser TerminateProcess (Win32) avec le handle de processus fourni par CreateProcess.

Pour fermer une application en connaissant son nom, il faut lister les processus avec CreateToolhelp32Snapshot (Win32), chercher le bon nom, et appeler TerminateProcess aussi.

Si c'est ton appli, voilà un exemple de solution (L'appli est fermée si la souris est immobile 20 * 100 millisecondes = 2 secondes) :
unit Unit1;


interface


uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls;


type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Déclarations privées }
  public
    { Déclarations publiques }
  end;


var
  Form1: TForm1;
  nFixedMouseCount: Integer;
  uOldPoint: TPoint;


implementation


{$R *.dfm}


procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Interval:= 100;
  nFixedMouseCount:= 0;
  GetCursorPos(uOldPoint);
end;


procedure TForm1.Timer1Timer(Sender: TObject);
var
  uCurrentPoint: TPoint;
begin
  GetCursorPos(uCurrentPoint);  if (uCurrentPoint.X uOldPoint.X) and (uCurrentPoint.Y uOldPoint.Y) then
  begin
    Inc(nFixedMouseCount);
    if nFixedMouseCount = 20 then Application.Terminate;
  end
  else nFixedMouseCount:= 0;
  uOldPoint:= uCurrentPoint;
end;


end.
Rejoignez-nous