Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
3 avril 2010 à 04:36
harlews
Messages postés1Date d'inscriptionmardi 16 février 2010StatutMembreDernière intervention21 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.
(Je ne retrouve plus l'API en question, je suis pourtant sur qu'elle existe... mais voici une solution en attendant).
spria
Messages postés7Date d'inscriptionmardi 24 octobre 2006StatutMembreDerniè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és13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
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és7Date d'inscriptionmardi 24 octobre 2006StatutMembreDerniè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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és162Date d'inscriptionjeudi 22 janvier 2004StatutMembreDernière intervention20 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és13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 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és3833Date d'inscriptionvendredi 23 juillet 2004StatutModérateurDernière intervention18 septembre 202250 5 avril 2010 à 02:26
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 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
Adn56
Messages postés1172Date d'inscriptionjeudi 24 mai 2007StatutMembreDernière intervention28 septembre 20131 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és7Date d'inscriptionmardi 24 octobre 2006StatutMembreDerniè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és7Date d'inscriptionmardi 24 octobre 2006StatutMembreDerniè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és99Date d'inscriptionmardi 22 août 2006StatutMembreDerniè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és7Date d'inscriptionmardi 24 octobre 2006StatutMembreDerniè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és99Date d'inscriptionmardi 22 août 2006StatutMembreDerniè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és99Date d'inscriptionmardi 22 août 2006StatutMembreDernière intervention 9 septembre 2014 3 avril 2010 à 23:48
Règle #2 : On est poli : «bonjour» et «merci» sont des mots plus qu'appréciés.
spria
Messages postés7Date d'inscriptionmardi 24 octobre 2006StatutMembreDerniè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és99Date d'inscriptionmardi 22 août 2006StatutMembreDernière intervention 9 septembre 2014 3 avril 2010 à 23:46
Re!
voilà au juste pour le évènements du clavier et de la souris...
Sinon, je suis d'accord avec toi l'accueil de l'admin laisse à désirer...
ircland
Messages postés99Date d'inscriptionmardi 22 août 2006StatutMembreDerniè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és7Date d'inscriptionmardi 24 octobre 2006StatutMembreDerniè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és17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 3 avril 2010 à 04:36
21 mai 2010 à 10:48
17 avril 2010 à 21:13
http://www.vbfrance.com/codes/VB2008-OBSERVER-ACTIVITE-INPUT-CLAVIER-SOURIS-UTILISATEUR_51635.aspx
à but utile et/ou pédagogique, si çà peut servir...
8 avril 2010 à 20:10
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).
8 avril 2010 à 16:25
Merci de me proposer ton aide, je pense que ça va aller, au pire je te fait signe ;-)
8 avril 2010 à 16:17
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 ;)
8 avril 2010 à 15:30
Merci pour vos conseils.
Moi non plus à pas compris l'histoire de la CNIL, surtout qu'il ne contient aucune donnée personnelle.
8 avril 2010 à 15:28
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 ?
8 avril 2010 à 15:21
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.
5 avril 2010 à 12:40
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...
++
5 avril 2010 à 02:55
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 ?
5 avril 2010 à 02:26
ici on a le choix du langage
http://www.codyx.org/snippet_detecter-activite-utilisateur_722.aspx
4 avril 2010 à 22:54
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
4 avril 2010 à 17:21
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
@++
4 avril 2010 à 00:15
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.
4 avril 2010 à 00:06
4 avril 2010 à 00:03
3 avril 2010 à 23:56
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.
3 avril 2010 à 23:50
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
3 avril 2010 à 23:48
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.
3 avril 2010 à 23:46
3 avril 2010 à 23:46
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...
3 avril 2010 à 23:40
3 avril 2010 à 09:59
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
3 avril 2010 à 04:36
et le clavier ?
cf. http://www.vbfrance.com/codes/TESTER-PRESENCE-UTILISATEUR-ISINPUTIDLE_34319.aspx