DÉTECTION DE L'ACTIVITÉ DU CURSEUR DE LA SOURIS

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 3 avril 2010 à 04:36
harlews Messages postés 1 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 21 mai 2010 - 21 mai 2010 à 10:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51547-detection-de-l-activite-du-curseur-de-la-souris

harlews Messages postés 1 Date d'inscription mardi 16 février 2010 Statut Membre Dernière intervention 21 mai 2010
21 mai 2010 à 10:48
merci pour ce code, il me donne dejà des idées!!!
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
17 avril 2010 à 21:13
2 semaines sans suite, voici donc une piste à suivre ou pas :
http://www.vbfrance.com/codes/VB2008-OBSERVER-ACTIVITE-INPUT-CLAVIER-SOURIS-UTILISATEUR_51635.aspx

à but utile et/ou pédagogique, si çà peut servir...
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
8 avril 2010 à 20:10
WM_MOUSEMOVE
WM_LBUTTONDOWN
WM_LBUTTONUP
WM_NCLBUTTONDOWN
WM_RBUTTONDOWN
WM_RBUTTONUP
WM_KEYDOWN, WM_KEYU

+

http://olsimare.developpez.com/articles/vbnet/hook/mousehook/

(Je ne retrouve plus l'API en question, je suis pourtant sur qu'elle existe... mais voici une solution en attendant).
spria Messages postés 7 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 8 avril 2010
8 avril 2010 à 16:25
Je vais adapter, mais je sais même pas si on peut appeler ça de l'adaptation tellement ça va ressembler au code de Renfield et du lien de Cirec.
Merci de me proposer ton aide, je pense que ça va aller, au pire je te fait signe ;-)
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
8 avril 2010 à 16:17
bigboss9 -> rien d'illégal ou d'espion à mesurer le temps d'inactivité de l'utilisateur, existence même de l'écran de veille que tu cites!

api magique? non je crois que tu parles d'observer SC_SCREENSAVE et SC_MONITORPOWER, justement.
seulement on peut très bien vouloir agir sur l'inactivité de l'utilisateur plus ou moins longtemps d'après le temps de déclenchement des paramètres et du temps appliqués à la mise en veille, extinction moniteur ou autre

un exemple de fonctionnement de cette méthode en VB6 ici :
http://files.codes-sources.com/fichier.aspx?id=38643&f=module\Mod_SubclassIdle.bas

mais aucun rapport, différentes méthodes "propres" ont été indiquées, la plus logique reste la toute première proposition

spria -> en effet ^^
donc tu adaptes? besoin d'un coup de pouce? de mon côté (pour le fun) je vais tenter de retranscrire en C#, un exercice comme un autre ;)
spria Messages postés 7 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 8 avril 2010
8 avril 2010 à 15:30
Bon bas j'ai regardé vos solutions et c'est sur que c'est 1000x mieux que mon code.
Merci pour vos conseils.

Moi non plus à pas compris l'histoire de la CNIL, surtout qu'il ne contient aucune donnée personnelle.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
8 avril 2010 à 15:28
De quoi parles-tu ?

une API magique... cites là...

Déclencher l'écran de veille. Ok, je vois ou tu veux en venir. Du coup, mon approche avec le GETLASTINPUTINFO semble coller (est-ce l'API magique ?)

que vient faire la CNIL là dedans ?
cs_bigboss9 Messages postés 162 Date d'inscription jeudi 22 janvier 2004 Statut Membre Dernière intervention 20 juillet 2013
8 avril 2010 à 15:21
TARATATA ... Il existe une API Magique pour ca .... Celle qui permet à windows de déclencher l'écran de veille ... Ou encore d'écrire un écran de veille transparent qui ferme la session ... Il existe de multiples solutions. En plus, c'est faisable avec Un seul timer et 3 fois moins de lignes de code...

Pour information, vérifie la légalité de ton projet, notamment avec les précautions de la CNIL. Tout système informatique public doit répondre aux exigences de la CNIL.
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
5 avril 2010 à 12:40
pour tenter je me suis quand même amusé à faire une classe pour mettre en pratique les différents conseils donnés (dont les miens ^^)

spria si tu penses t'en sortir avec cette API (ou d'une autre manière) alors compte sur nous pour te donner un coup de main SI tu bloques sur certains points
sinon je peux poster la classe si çà peut aussi aider...

++
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 avril 2010 à 02:55
Clair que si le style de ma plume quand sur un coup de tete je me leve en plein milieu de la nuit de plait pas.....

tant pis !

maintenant, mes commentaires etaient constructif, dommage que l'auteur n'ai apparement pas clique sur le lien

PCPT et CIREC ont dit le reste, et pourquoi espionner l'activite soi meme quand un GetLastInputInfo peut faire ca directement ?
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
5 avril 2010 à 02:26
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
4 avril 2010 à 22:54
bonsoir,

dommage que les commentaires soient apparemment mal perçus, avec ou sans la forme qu'on aimerait voir

(euh... beh oui faut remettre dans le contexte, un tel code, donc n'observant que la souris, ce avec une usine... proportionnellement, faut tenir compte du message quand même)

donc pour essayer d'aider un peu :
3 timers? non. un seul, avec une variable STATIC

1 form? non. on peut avoir un projet sans form, dommage de forcer alors ce poids juste pour avoir l'event mousemove alors qu'un timer n'a pas besoin de form. cf GETCURSORPOS

1 timer? là çà dépend.
si c'est juste une observation souris comme dans ce code, alors ok mais c'est du VB.NET! on peut donc penser "objet", une class contenant son propre timer et ne renvoyant l'event d'interdiction que lorsque le temps prédéfini est atteint par exemple, et quelques méthodes pratiques (IsMoving, IsIdle, etc...)
si c'est une observation clavier, on peut penser (pour ne pas avoir de form) à un hook, ou juste (avec le même timer) jouer avec GETKEYBOARDSTATE, ou enfin (comme l'avait proposé Renfield) à GETLASTINPUTINFO

cette dernière solution est en effet la plus propre, fonctionnera en virtualmachine, tiens compte de la souris ET du clavier, et reste cumulable avec le timer

code C# :
http://www.chapleau.info/wiki/Project_ActivityMonitoring

convertir en VB.NET (vaguement tout au moins) :
http://tools.codes-sources.com/DotNetCodeConverter.aspx

bonne continuation
Adn56 Messages postés 1172 Date d'inscription jeudi 24 mai 2007 Statut Membre Dernière intervention 28 septembre 2013 1
4 avril 2010 à 17:21
salut, en effet trois timer me parraissent beaucoup, déja le timer2 si il est réglé sur ta tempo de 10minutes timer2.interval=tavariable*1000 alors tu n'a pas besoin du timer3 non ?
Ex en séquence :
étape 1 : mémo pos souris
étape 2 : tempo 10min
étape 3 : test mémo avec pos actuel
si false alors etape 1
si true alors action
@++
spria Messages postés 7 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 8 avril 2010
4 avril 2010 à 00:15
Merci bien,
Pas de vrai prise de contrôle à distance mais une petite surveillance ( utilisateurs connectés, temps passé, impressions lancées, et sites web visités), juste la possibilité pour l'admin du parc de déconnecter les utilisateurs et d'envoyer des messages. Le projet devrait devenir open source si tout va bien.
spria Messages postés 7 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 8 avril 2010
4 avril 2010 à 00:06
Oui VB accepte de renvoyer la donnée même si l'application n'est pas au premier plan, je viens de refaire un test et ça fonctionne bien.
ircland Messages postés 99 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 9 septembre 2014
4 avril 2010 à 00:03
oh ^^ bien bonne chance pour ce bon projet... Dans ton projet tu va pouvoir prendre le controle à distance de tes zombies ?
spria Messages postés 7 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 8 avril 2010
3 avril 2010 à 23:56
Merci de ton aide.
Pour être plus précis j'écris une interface pour des postes en accès libre ( bibliothèques,mairie ...) et le but du jeux est de pouvoir contrôler entièrement l'environnement dans lequel évolue l'utilisateur, applications autorisées, identification par numéro abonné, logs de connexions, explorateur de fichier... . A l'aide d'une GPO sous Windows 2003 je remplace "entièrement" l'interface Windows et essaye d'en reproduire son comportement, notamment l'inactivité de l'utilisateur pour fermer sa session en cas d'absence.
ircland Messages postés 99 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 9 septembre 2014
3 avril 2010 à 23:50
Oh ok effectivement si la fenêtre n'est pas en focus sa sert en rien...

Lorsque ton timer boucle, tu as ce code

Old_Point = Cursor.Position

Si la fenêtre n'est pas au premier plan, Cursor.Position renvoie la position du curseur sans problème ? J'aurais pensé que VB aurait pas aimé sa... mais bon
ircland Messages postés 99 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 9 septembre 2014
3 avril 2010 à 23:48
Erf on peut pas edit et j'ai cliqué trop vite...

Pour posté un poste on doit accepté la règle de bonne conduite... ( http://www.vbfrance.com/reglement.aspx )

Règle #2 : On est poli : «bonjour» et «merci» sont des mots plus qu'appréciés.
spria Messages postés 7 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 8 avril 2010
3 avril 2010 à 23:46
Pour le clavier et la souris j'avais fait des essais avec les événement keypress, keyup et mousemove, seulement ceux-ci ne fonctionnent que lorsque la Form est en premier plan et que le curseur passe sur les contrôles, idem pour le clavier ça ne fonctionne qu'en premier plan. J'avais besoin de savoir si le curseur bouge peut importe que la Form soit minimisée,en arrière-plan ou pas, d'où ma méthode.
ircland Messages postés 99 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 9 septembre 2014
3 avril 2010 à 23:46
Re!

voilà au juste pour le évènements du clavier et de la souris...

voir image :

http://img297.imageshack.us/img297/8832/55003069.png

Sinon, je suis d'accord avec toi l'accueil de l'admin laisse à désirer...
ircland Messages postés 99 Date d'inscription mardi 22 août 2006 Statut Membre Dernière intervention 9 septembre 2014
3 avril 2010 à 23:40
Pour le clavier, tu peux utilisé les évènements keypress, keyup, keydown, etc... même principe sauf aussi tu pourrais faire un "meilleur" code. Malgré que ton code semble fonctionné il a des moyens plus "propre" pour faire ceci, il n'a pas d'évènements MouseMove dans vb ? J'ouvre mon vb et je reposte tantôt
spria Messages postés 7 Date d'inscription mardi 24 octobre 2006 Statut Membre Dernière intervention 8 avril 2010
3 avril 2010 à 09:59
Pfiou l'accueil sa donne envie, pour un admin je suis scotché.
Pour le clavier j'ai pas trouvé de méthode jusqu'à présent, mise à part le tienne que je viens de voir.
Quand tu dit "aurait pu être fait avec un seul Timer", je veux bien une explication tant qu'à faire
Merci
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 avril 2010 à 04:36
aurait pu etre fait avec 1 seul Timer ...

et le clavier ?

cf. http://www.vbfrance.com/codes/TESTER-PRESENCE-UTILISATEUR-ISINPUTIDLE_34319.aspx
Rejoignez-nous