Détecter l'absence d'activité [Résolu]

cs_philpas 77 Messages postés lundi 17 octobre 2005Date d'inscription 4 septembre 2008 Dernière intervention - 10 juil. 2006 à 11:54 - Dernière réponse : cs_Forman 663 Messages postés samedi 8 juin 2002Date d'inscription 6 avril 2010 Dernière intervention
- 17 juil. 2006 à 22:28
Bonjour, j'aurais besoin de vos lumières car pour le moment je vois pas comment faire. J'utilise plusieurs fiche sur mon application. Pour faire court j'ai une fiche planning où l'opérateur choisi les fichiers qu'il désire envoyer sur une commande numérique par le port COM. Une fois que l'opérateur à envoyer un fichier, une autre fiche apparait. Cette fiche affiche un compteur de pièce qui est mis à jour par la commande numérique. L'opérateur peut à tout moment quitter la fiche compteur pour revenir sur la fiche planning. Hors je voudrais que la fiche compteur revienne à l'écran si je ne détecte plus d'activité que ce soit clavier ou souris car l'opérateur ne remettra pas forcément la fiche compteur à l'écran.
Comment détecte on qu'il n'y a pas d'activité sur le clavier et sur la souris? et comment je redéclenche le réaffichage de la fiche compteur?

merci d'avance
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Forman 663 Messages postés samedi 8 juin 2002Date d'inscription 6 avril 2010 Dernière intervention - 10 juil. 2006 à 12:31
3
Merci
function GetIdleTime:Cardinal;
var
  LI:TLastInputInfo;
begin
  LI.cbSize:=SizeOf(LI);
  GetLastInputInfo(LI);
  Result:=GetTickCount-LI.dwTime;
end;

Cette fonction te renvoie (en millisecondes) le temps écoulé depuis la dernière action de l'utilisateur (click, touche du clavier ou mouvement de la souris). Il te suffit de l'utiliser dans un Timer par exemple:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if
GetIdleTime>10000 then begin
    //<-Code pour afficher le compteur
    Timer1.Enabled:=False;
  end;


end;



Tu devras lancer le Timer1 lorsque tu cacheras la fenêtre du compteur.

Merci cs_Forman 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 95 internautes ce mois-ci

Commenter la réponse de cs_Forman
cs_philpas 77 Messages postés lundi 17 octobre 2005Date d'inscription 4 septembre 2008 Dernière intervention - 10 juil. 2006 à 14:13
0
Merci
Merci de ton aide, c'est ce que je cherchais. Je vais utiliser ton code.

Une remarque, sur le net, j'ai cherché la signification de GetLastInputInfo. Et je suis tombé sur une info intéressante. Si la souris (optique en général) présente une anomalie,  c'est à dire que le pointeur bouge en permanence de 1 ou 2 pixels sur l'écran, la fonction considère qu'il y a une activité.
Commenter la réponse de cs_philpas
cs_Forman 663 Messages postés samedi 8 juin 2002Date d'inscription 6 avril 2010 Dernière intervention - 10 juil. 2006 à 15:19
0
Merci
J'avais déjà remarqué, ça le fait chez moi
Commenter la réponse de cs_Forman
cs_philpas 77 Messages postés lundi 17 octobre 2005Date d'inscription 4 septembre 2008 Dernière intervention - 17 juil. 2006 à 11:39
0
Merci
Ton code fonctionne bien sous Win2000 et XP, mais je viens de testé mon programme sous win95 et 98 et là ça ne marche pas. Hors mon logiciel dois aussi fonctionner sous ces environnements. J'ai le message "le fichier machine.exe est lié à une exportation manquante user32.dll:GetLastInputInfo"
Y a t-il une fonction équivalente à GetLastInputInfo pour Win95/98 pour connaitre le temps d'inactivité du pc?
Merci
Commenter la réponse de cs_philpas
cs_Forman 663 Messages postés samedi 8 juin 2002Date d'inscription 6 avril 2010 Dernière intervention - 17 juil. 2006 à 22:28
0
Merci
Non je ne crois pas qu'il y ait un équivalent Win95, il faudra le programmer "à la main" alors. Pour ça tu as les fonctions:
GetCursorPos (pour avoir la position de la souris)
et
GetKeyboardState (pour avoir l'état des touches du clavier)

il te suffit de faire un Timer toutes les 100millisecondes par exemple et vérifier qu'aucune touche du clavier n'a été enfoncée et que la souris n'a pas (beaucoup) bougé. L'avantage c'est que tu pourras ignorer les micro-déplacements de la souris, l'inconvénient c'est que c'est très laid comme méthode, et que ça consomme de la resource processeur pour pas grand chose...
Commenter la réponse de cs_Forman

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.