Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

TEMPS D'INACTIVITÉ (HOOK, WIN32)


Information sur la source

Catégorie :API Classé sous : inactivité, temps, durée Niveau : Débutant Date de création : 03/10/2005 Date de mise à jour : 06/10/2005 22:27:37 Vu / téléchargé: 5 565 / 440

Note :
Aucune note

Commentaire sur cette source (14)
Ajouter un commentaire et/ou une note

Description

N'en trouvant pas sur le site, j'ai fait cette petite source qui permet de connaitre le temps d'inactivité de l'utilisateur (temps où il n'a pas utilisé ni la souris, ni le clavier).

Les remarques sont bien sur les bienvenues ;)
 

Conclusion

On utilise un hook message pour detecter l'activité, les messages interceptés qui me sont venus à l'esprit sont pour l'instant :
WM_MOUSEMOVE, WM_LBUTTONDOWN, WM_LBUTTONUP, WM_NCLBUTTONDOWN, WM_RBUTTONDOWN, WM_RBUTTONUP, WM_KEYDOWN, WM_KEYUP

Si vous en voyez d'autres interressant, n'hésitez pas.

(exe dans le zip renommé en exe.bak)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  •   tempsInactivite
    •   hookTempsInactivite
    •   startRecord
      •   Release
        • hookTempsInactivite.dllTélécharger ce fichier [Réservé aux membres club]49 152 octets
        • startRecord.exe.bakTélécharger ce fichier [Réservé aux membres club]45 056 octets
      • hookTempsInactivite.libTélécharger ce fichier [Réservé aux membres club]2 594 octets
      • resource.hTélécharger ce fichier [Réservé aux membres club]Voir ce fichier506 octets
      • startRecord.apsTélécharger ce fichier [Réservé aux membres club]31 856 octets
      • startRecord.cppTélécharger ce fichier [Réservé aux membres club]Voir ce fichier1 858 octets
      • startRecord.dspTélécharger ce fichier [Réservé aux membres club]Voir ce fichier4 045 octets
      • startRecord.dswTélécharger ce fichier [Réservé aux membres club]Voir ce fichier545 octets
      • startRecord.ncbTélécharger ce fichier [Réservé aux membres club]41 984 octets
      • startRecord.optTélécharger ce fichier [Réservé aux membres club]55 296 octets
      • startRecord.plgTélécharger ce fichier [Réservé aux membres club]1 185 octets
      • startRecord.rcTélécharger ce fichier [Réservé aux membres club]Voir ce fichier2 220 octets

Télécharger le zip

Historique

06 octobre 2005 22:27:38 :
Correction effectuée pour ne pas tenir compte de message WM_MOUSEMOVE parasite qui apparement arrivaient suite à un raffraichissement ou peut-etre un changement temporaire de curseur... Lors de ce message, le hook vérifie donc si les coordonnées ont bel et bien changé.

Commentaires et avis

signaler à un administrateur
Commentaire de max12 le 03/10/2005 20:07:42 administrateur CS

Vraiment obliger de DLLisé pour faire un hook :(

signaler à un administrateur
Commentaire de Raish le 03/10/2005 20:49:47

Pour sûr, puisque les hook ds DLL sont des hook systèmes et ils auront donc tjrs la priorité sur les hooks de programmes...

signaler à un administrateur
Commentaire de BruNews le 03/10/2005 21:39:16 administrateur CS

Pas une question de priorité mais simplement qu'un hook système doit se trouver dans une dll pour que le système en mappe une copie dans les processus cibles.

signaler à un administrateur
Commentaire de hilairenicolas le 03/10/2005 22:12:02

J'viens de penser que je pourrais rajouter le message de la molette ...

signaler à un administrateur
Commentaire de hilairenicolas le 04/10/2005 23:28:02

Je m'apercois que j'ai un comportement bizarre ...

De temps, en temps, alors que je ne bouge pas ma souris, est envoyé un message WM_MOUSEMOVE qui perturbe le chronométrage de l'inactivité.

Quelqu'un aurait-il une idée sur ce message parasite ?

Merci

(si quelqu'un veut tester dans son environnement pour me dire s'il observe le meme comportement, c'est très simple :
je propose cette marche à suivre :
- rajouter dans le pragma data_seg une variable
   bool flag = false;
- rajouter dans la callback (juste en dessous de dernierCpt = GetTickCount ();)
if (flag)
{
if (ms.message == WM_MOUSEMOVE)
OutputDebugString("WM_MOUSEMOVE");
if (ms.message == WM_LBUTTONDOWN)
OutputDebugString("WM_LBUTTONDOWN");
if (ms.message == WM_LBUTTONUP)
OutputDebugString("WM_LBUTTONUP");
if (ms.message == WM_NCLBUTTONDOWN)
OutputDebugString("WM_NCLBUTTONDOWN");
if (ms.message == WM_RBUTTONDOWN)
OutputDebugString("WM_RBUTTONDOWN");
if (ms.message == WM_RBUTTONUP)
OutputDebugString("WM_RBUTTONUP");
if (ms.message == WM_KEYDOWN)
OutputDebugString("WM_KEYDOWN");
if (ms.message == WM_KEYUP)
OutputDebugString("WM_KEYUP");
flag = false;
}
- rajouter avant le return res/1000 de IdleTime
   flag = (res/1000 > 10);

- télécharger dbgview.exe (qui redigire la sortie de Outputdebugstring) disponible sur http://www.sysinternals.com/Files/DebugViewNt.zip

- recompiler la dll, relancer tout :)
)

Merci de votre feedback

signaler à un administrateur
Commentaire de patatalo le 05/10/2005 23:42:27 administrateur CS

il peut etre normal d'obtenir des messages parasites suivant le type de souris.
met un tel portable allumé a coté et tu verras le pire.
@++

signaler à un administrateur
Commentaire de hilairenicolas le 06/10/2005 10:01:57

possible ...
ca va pas m'aider à faire marcher mon programme , lol

Si vous avez une autre idée pour faire un système d'inactivité, je suis partant

signaler à un administrateur
Commentaire de hilairenicolas le 06/10/2005 22:29:11

Voilà, une correction a été faite ==> mise à jour

Voir le commentaire

Si vous avez d'autres commentaires, je suis tout ouie :-)

signaler à un administrateur
Commentaire de BruNews le 13/10/2005 19:55:54 administrateur CS

Utiliser GetLastInputInfo() ne serait pas plus simple ?

signaler à un administrateur
Commentaire de hilairenicolas le 13/10/2005 20:03:05

waou !!! je connaissais pas ...

c'est pas trop simple ?? :p

d'un coup, je trouve que mon hook fait un peu ridicule

signaler à un administrateur
Commentaire de ndubien le 29/11/2007 14:53:12

Salut tout le monde,
Ne serait-il pas préférable de faire deux hooks, un pour le clavier et un pour la souris?
Si non, quels seraient les problèmes de mon idée?

signaler à un administrateur
Commentaire de benland le 05/12/2007 15:24:12

Super ton code Nicolas! c justement ce que je recherchais! Mais dis moi, tu ne serais pas le Nicolas Holaire ke g connu a Perpignan ?

signaler à un administrateur
Commentaire de ndubien le 06/12/2007 13:21:43

Non désolé je ne suis pas Nicolas Holaire... Et content que mon cade ai pu servir à quelqu'un. A+

signaler à un administrateur
Commentaire de ndubien le 06/12/2007 13:22:24

oups..., "mon code" pas "mon cade" A+

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

C++ :J'ai cherché partout, VOUS ETES MON SEULE ESPOIR! Même mes profs n'y connaissent rien... [ par Amidala ] Ca fait des journées que j'y bosse, je cherche à trouver l'équivalent de la fonction "Sleep" ou "Wait" en Visual C++ 6.0. (introuvable dans la catégor division [ par superoi ] bonjour en fait je doit realiser une calculatrice juste avec les operateur (+ - / * %) mais qui gere de grand chiffre (des chiffre de 10 000 digit pa temps en micro secondes [ par Sting ] Quelqu'un connaitrait-il une fonction pour avoir le temps en microsecondes (enfin... en une unitée plus petite que la seconde). erreur mémoire pour un décompte [ par yeager ] Bonjourj'ai fait un petit code pour lancer un programme toutes les 30 secondes.Lorsque je lance le débugger, ça marche nichel.Mais lorsque je lance le Programmation TEMPS REEL [ par kunfuka ] QQ'un pourrait m'aider sur le fonctionnement des signaux et des alarmes svp !!Je dois realiser un programme qui lance un thread qui affiche l'heure to netstat : suivi des entree/sortie temps reels [ par SnakeKNG ] je cherche programme ou sources de preference pour remplacer le netstat de windows permettant dfe savoir en temps reels les entrees et sortie de la co new ... [ par payen ] bonjour,une petite question en ce qui concerne le calcul d'un temps : si je fais le code suivant, est ce que j'obtiens le temps REEL d'allocation?deb temps d'execution d'un programme [ par asnow ] Je voudrais savoir en combien de temps mon programme (tri de tableau) s'execute, quel code dois-je rajouter en C svp ?merci plusieur reception UDP en meme temps [ par sena ] Bonjour a tous,je fais une reception en UDp.Ce que je voudrais savoir c'est ce qui se passe quand plusieurs trames arrivent en même temps.Est-ce que probleme heure en temps reel [ par nazca ] Le Zero de la programmationNazca[blue]J ai un petit probleme,j ai afficher dans plusieurs edit box l'heure du systeme grace a se code:CTime TimeObject


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 11,934 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.