cs_cacoucatatonique
Messages postés164Date d'inscriptionvendredi 25 février 2005StatutMembreDernière intervention 7 octobre 2009
-
19 mars 2007 à 16:11
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDerniè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
Filipe35
Messages postés470Date d'inscriptionvendredi 14 novembre 2003StatutMembreDernière intervention23 octobre 20071 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.
cs_cacoucatatonique
Messages postés164Date d'inscriptionvendredi 25 février 2005StatutMembreDerniè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.
cs_rt15
Messages postés3874Date d'inscriptionmardi 8 mars 2005StatutModérateurDernière intervention 7 novembre 201413 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;
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;