Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 2008
-
23 août 2006 à 15:57
cs_volcelest
Messages postés4Date d'inscriptionsamedi 25 janvier 2003StatutMembreDernière intervention24 mars 2011
-
21 déc. 2010 à 11:55
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
cs_volcelest
Messages postés4Date d'inscriptionsamedi 25 janvier 2003StatutMembreDernière intervention24 mars 2011 21 déc. 2010 à 11:55
Pour que cela fonctionne sous VS2008, dans les propriétes de mon projet, au niveau de l'onglet debug j'ai du décocher "Activer le processus d'hébergement Visual Studio" puis dans mon code, j'ai dû utiliser l'appel de l'arrêt du blocage sous la forme
this._gHook.Stop(true,true,false);.
afin d'éviter le message d'erreur.... pourquoi ? mais çà fonctionne parfaitement
Neokript
Messages postés18Date d'inscriptionjeudi 19 janvier 2006StatutMembreDernière intervention22 avril 2010 28 déc. 2009 à 14:34
Bonjour,
j'ai modifie ton code afin de ne gerer que le clavier comme ceci :
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Windows.Forms;
namespace ClientUser
{
class KeyBoardState
{
#region Variables
private int _hKeyboardHook = 0;
private static HookProc KeyboardHookProcedure = null;
#endregion
#region DLL Import
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, int dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern int UnhookWindowsHookEx(int idHook);
#endregion
#region Delegate
private delegate int HookProc(int nCode, int wParam, IntPtr lParam);
#endregion
#region Constantes
private const int WH_KEYBOARD_LL = 13;
#endregion
#region Méthodes
public KeyBoardState()
{
}
~KeyBoardState()
{
this.Disable();
}
public void Disable()
{
if (this._hKeyboardHook == 0)
{
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
Int32 test = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
}
}
public void Enable()
{
if (this._hKeyboardHook != 0)
{
UnhookWindowsHookEx(this._hKeyboardHook);
this._hKeyboardHook = 0;
}
}
public Boolean IsEnable
{
get
{
if (this._hKeyboardHook == 0)
return (false);
return (true);
}
}
private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam)
{
return (-1);
}
#endregion
}
}
Cependant, SetWindowsHook me renvoi toujours 0.
Je precice que je suis sous Seven je ne sais pas si cela joue !
J'ai l'erreur 126 pour infos, module not found, faut-il que je mette le code dans une dll ?
Merci de votre aide,
Cordialement,
NeoKript
cs_cris27
Messages postés1Date d'inscriptiondimanche 5 mars 2006StatutMembreDernière intervention19 septembre 2008 19 sept. 2008 à 15:00
Merci beaucoup ,
Je me sert de ce code pour vérouiller des pc de supervision industrielle .
Merci !!
C'est presque exactement ce que je cherchais, pour laisser ma fille (11 mois :D ) jouer avec l'ordinateur (à son âge, elle veut surtout faire comme papa-maman) sans avoir peur du "suppr" malencontreux ^^
J'ai juste modifié un peu le code pour qu'il se lance sans limite de temps, mais s'arrête si on tape 4 fois de suite la touche . Et j'ai aussi laissé le mouvement de la souris (pas les clics) pour qu'elle voie que ça bouge :)
Le source est suffisamment clair pour que ces modifs ne m'aient pas pris plus d'une heure ! Bien joué :)
nico9111
Messages postés4Date d'inscriptionjeudi 13 mars 2008StatutMembreDernière intervention20 mars 2008 29 mars 2008 à 16:05
Dans le cas précis de la désactivation ça peut se faire sans hook :
[DllImport("user32.dll")]
static extern bool BlockInput(bool fBlockIt);
Ça renvoie true si ça réussit, sinon false; un Ctrl+Alt+Suppr suffit à réactiver, sinon le seul thread qui peut réactiver est celui qui a désactivé.
panterga
Messages postés67Date d'inscriptiondimanche 27 mars 2005StatutMembreDernière intervention 5 février 20121 15 déc. 2007 à 18:36
j'ai une utilité
si vous utilisez un scanner sur un pda et que quelqu'un appui sur le clavier avant de scanner vous risquez d'avoir une lecture erronée .
sylvafilms
Messages postés7Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention23 juin 2010 6 juil. 2007 à 20:04
Merci bidou !
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 6 juil. 2007 à 08:09
Non ça n'a rien avoir, C, C++ et C# c'est différent (surtout pour le dernier).
Et ici, tu es sur csharpfr.com, où on fait du C# (cSharp).
Pour le C/C++ tu peux aller ici: www.cppfrance.com
sylvafilms
Messages postés7Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention23 juin 2010 5 juil. 2007 à 23:15
C'est a dire, il y a le language C et C# ?
Quand tu dis C#, tu veux dire C++ ?
Saurait tu comment créer le meme type de code en C ?
Merci d'avance.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 5 juil. 2007 à 21:15
Euh, ce code c'est du C#, pas du C!
Rien avoir :-/
sylvafilms
Messages postés7Date d'inscriptionjeudi 5 juillet 2007StatutMembreDernière intervention23 juin 2010 5 juil. 2007 à 20:49
Bonjour, et merci pour ce code vraiment très utile dans mon cas car je suis en train de faire un programme ou meme si on appuye sur les touches du clavier avant d'arriver a la saisie d'un code par un scanf() ou gets(), et bien les touches que l'on a appuyé précédement ne doivent pas aparaitre. (car windows se rapelle de nos actions et déballe toutes les touches d'un coup qu'on a tapé quand arrive le scanf.
Donc le seul moyen que je connais dans mon cas est de verrouiller le clavier.
Seulement voila, je n'arrive pas a faire fonctionner ce code.
Je suis débutant dans le domaine.
Si Mr le créateur pouvait m'aider ce serait vraiment en le remerciant! :)
J'ai fait un programme de test vite fait pour tester le code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// début du programme de test
private UserActivityHook _gHook = new UserActivityHook();
this._gHook.Start(); // Start the process
sleep(5000) // c'est a ce moment que j'appuye sur les touches du clavier
this._gHook.Stop(); // Stop the process
printf("press key");
getch(); // la le programme ne doit pas passer le getch()si je n'appuye pas sur une touche,
// puisque le clavier était verouillé lors de la frappe pendant le sleep(5000)
// fin du programme de test
printf ("\n\n\n\nPROGRAMME TERMINE");
getch();
return 0;
}
Donc voila, je vous serait très reconnaissant si un codeur pouvait m'expliquer comment faire marcher ce code.
Merci d'avance, et bonne continuations a tous!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 7 juin 2007 à 00:47
pi comme je l'ai dit plus haut, rien n'empeche le passager de regler le GPS...alors meme que le vehicule bouge
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 6 juin 2007 à 17:11
Tant mieux si vous trouvez des cas d'utilisations utiles ^^
Pour l'exe, je ne l'ai pas ajouté car en l'état, le programme ne sert à rien sauf à faire ch*er le monde ;-)
lording
Messages postés6Date d'inscriptionmercredi 26 juillet 2006StatutMembreDernière intervention11 février 2008 6 juin 2007 à 15:45
Les valeur vitesse GPS ne sont pas fixe et donc il se peut que le véhicule ne bouge pas et pourtant le gps envoi une vitesse de déplacement (tout dépends du type de GPS utilisé et du nombre de satelites réceptionner).
Il est vrai que 30km/h est large, mais prennons 10km, car si on fait des testes en étant a pieds il ne doit pas se bloquer.
Uniquement si la vitesse de déplacement est supérieure a la vitesse de marche.
Voila tout.
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 6 juin 2007 à 14:10
Et dans ce cas, autant être logique et bloquer l'utilisation clavier/souris dès que le véhicule est en mouvement...
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 6 juin 2007 à 13:41
trop radical...
m'arrive de bidouiller mon GPS sur l'autoroute, même...
sans compter qu'il peut y avoir un "co-pilote" ^^
lording
Messages postés6Date d'inscriptionmercredi 26 juillet 2006StatutMembreDernière intervention11 février 2008 6 juin 2007 à 13:17
Messieurs,
Je viens de trouver une utilité importante au code.
Il s'agit de détecter une vitesse GPS (dans le cas d'une utilisation en voiture) et de bloquer l'accès au clavier souris si on roule a une vitesse supérieure a 30km.
Des lors on évite ainsi des accidents graves.
Si la vitesse gps est + de 30km/h clavier souris bloquer si la vitesse gps est moins de30km/h le clavier et la souris sont a nouveau actif.
Voila. Super code en bref et non pas a but douteux lol (enfin pour ma part) !!!!!
Il y a juste qu'il serait intéressent d'ajouter la version compilé.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 11 mai 2007 à 08:58
Bhaal_DtC
Messages postés7Date d'inscriptiondimanche 4 septembre 2005StatutMembreDernière intervention 6 mai 2007 6 mai 2007 à 18:17
Bon je suis sauvé, je viens de trouver pourquoi cela ne fonctionne pas. avis aux futurs utilisateurs cela peut aider.
Dans les propriétes de mon projet, au niveau de l'onglet debug j'ai du décocher "Enable the Visual Studio hosting process".
Si quelqu'un peu me dire à quoi cela sert en temps normal je suis prenneur :)
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 6 mai 2007 à 17:49
Il suffit de créer un object UserActivityHook
private UserActivityHook _gHook = new UserActivityHook();
Puis d'appeler start pour enclencher, ou stop pour arrêter
this._gHook.Start(); // Start the process
this._gHook.Stop(); // Stop the process
Bhaal_DtC
Messages postés7Date d'inscriptiondimanche 4 septembre 2005StatutMembreDernière intervention 6 mai 2007 6 mai 2007 à 17:19
Salut,
Je viens de tester cette source et elle est excellente. Le projet marche trés bien mais il n'y a rien a faire je n'arrive pas a l'utiliser cette classe dans un nouveau projet VS2005. Il y a une manip spéciale à faire ou alors je fais ma quiche :o.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 4 avril 2007 à 07:50
Non (cf. les deux premiers commentaires)
xxx007xxx
Messages postés5Date d'inscriptionsamedi 20 janvier 2007StatutMembreDernière intervention15 novembre 2007 4 avril 2007 à 06:03
Est-ce qu'il block les keys modifier :shift-alt-ctrl?
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 1 mars 2007 à 08:46
Salut et merci du commentaire.
J'ai posté ce code à la demande sur le forum...
Il assez facile de l'adapter pour que l'ont puisse choisir si on veut bloquer soit la souris, soit le clavier ;-)
leproc
Messages postés81Date d'inscriptionlundi 26 septembre 2005StatutMembreDernière intervention22 octobre 2008 28 févr. 2007 à 21:06
En fait je vien de trouver une utilité. Quand un programme p^rend beaucoup de ressource on bloque clavier et souris le temp de l'opération
leproc
Messages postés81Date d'inscriptionlundi 26 septembre 2005StatutMembreDernière intervention22 octobre 2008 28 févr. 2007 à 21:04
Je vois pas l'intérêt non plus, sauf si on peut désactivé clavier ou souris, mais les 2 à la fois
Bon bah reset quoi.
cs_Bidou
Messages postés5487Date d'inscriptiondimanche 4 août 2002StatutMembreDernière intervention20 juin 201361 23 août 2006 à 19:17
Effectivement, mais tu n'es pas plus avancé car une fois la fenêtre du task manager ouverte, tu ne peux plus rien faire...
Nikoui
Messages postés794Date d'inscriptionvendredi 24 septembre 2004StatutMembreDernière intervention19 août 200813 23 août 2006 à 15:57
Interressant ! Je n'imaginais pas que c'était possible d'aller jusque là... Après comme tu le dis, difficile d'y voir une utilité autre que faire une mauvaise blague (dans le meilleur des cas). Remarque : Chez moi (winXP) la combinaison Ctrl+Alt+Suppr n'est pas bloquée... (l'OS se garde quand même une petite sécurité ?)
21 déc. 2010 à 11:55
this._gHook.Stop(true,true,false);.
afin d'éviter le message d'erreur.... pourquoi ? mais çà fonctionne parfaitement
28 déc. 2009 à 14:34
j'ai modifie ton code afin de ne gerer que le clavier comme ceci :
using System;
using System.ComponentModel;
using System.Runtime.InteropServices;
using System.Reflection;
using System.Windows.Forms;
namespace ClientUser
{
class KeyBoardState
{
#region Variables
private int _hKeyboardHook = 0;
private static HookProc KeyboardHookProcedure = null;
#endregion
#region DLL Import
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hMod, int dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall, SetLastError = true)]
private static extern int UnhookWindowsHookEx(int idHook);
#endregion
#region Delegate
private delegate int HookProc(int nCode, int wParam, IntPtr lParam);
#endregion
#region Constantes
private const int WH_KEYBOARD_LL = 13;
#endregion
#region Méthodes
public KeyBoardState()
{
}
~KeyBoardState()
{
this.Disable();
}
public void Disable()
{
if (this._hKeyboardHook == 0)
{
KeyboardHookProcedure = new HookProc(KeyboardHookProc);
Int32 test = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0);
}
}
public void Enable()
{
if (this._hKeyboardHook != 0)
{
UnhookWindowsHookEx(this._hKeyboardHook);
this._hKeyboardHook = 0;
}
}
public Boolean IsEnable
{
get
{
if (this._hKeyboardHook == 0)
return (false);
return (true);
}
}
private int KeyboardHookProc(int nCode, int wParam, IntPtr lParam)
{
return (-1);
}
#endregion
}
}
Cependant, SetWindowsHook me renvoi toujours 0.
Je precice que je suis sous Seven je ne sais pas si cela joue !
J'ai l'erreur 126 pour infos, module not found, faut-il que je mette le code dans une dll ?
Merci de votre aide,
Cordialement,
NeoKript
19 sept. 2008 à 15:00
Je me sert de ce code pour vérouiller des pc de supervision industrielle .
Trés bonne source
12 août 2008 à 15:44
C'est presque exactement ce que je cherchais, pour laisser ma fille (11 mois :D ) jouer avec l'ordinateur (à son âge, elle veut surtout faire comme papa-maman) sans avoir peur du "suppr" malencontreux ^^
J'ai juste modifié un peu le code pour qu'il se lance sans limite de temps, mais s'arrête si on tape 4 fois de suite la touche . Et j'ai aussi laissé le mouvement de la souris (pas les clics) pour qu'elle voie que ça bouge :)
Le source est suffisamment clair pour que ces modifs ne m'aient pas pris plus d'une heure ! Bien joué :)
29 mars 2008 à 16:05
[DllImport("user32.dll")]
static extern bool BlockInput(bool fBlockIt);
BlockInput(true); -> désactive
BlockInput(false); -> réactive
Ça renvoie true si ça réussit, sinon false; un Ctrl+Alt+Suppr suffit à réactiver, sinon le seul thread qui peut réactiver est celui qui a désactivé.
15 déc. 2007 à 18:36
si vous utilisez un scanner sur un pda et que quelqu'un appui sur le clavier avant de scanner vous risquez d'avoir une lecture erronée .
6 juil. 2007 à 20:04
6 juil. 2007 à 08:09
Et ici, tu es sur csharpfr.com, où on fait du C# (cSharp).
Pour le C/C++ tu peux aller ici: www.cppfrance.com
5 juil. 2007 à 23:15
Quand tu dis C#, tu veux dire C++ ?
Saurait tu comment créer le meme type de code en C ?
Merci d'avance.
5 juil. 2007 à 21:15
Rien avoir :-/
5 juil. 2007 à 20:49
Donc le seul moyen que je connais dans mon cas est de verrouiller le clavier.
Seulement voila, je n'arrive pas a faire fonctionner ce code.
Je suis débutant dans le domaine.
Si Mr le créateur pouvait m'aider ce serait vraiment en le remerciant! :)
J'ai fait un programme de test vite fait pour tester le code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// début du programme de test
private UserActivityHook _gHook = new UserActivityHook();
this._gHook.Start(); // Start the process
sleep(5000) // c'est a ce moment que j'appuye sur les touches du clavier
this._gHook.Stop(); // Stop the process
printf("press key");
getch(); // la le programme ne doit pas passer le getch()si je n'appuye pas sur une touche,
// puisque le clavier était verouillé lors de la frappe pendant le sleep(5000)
// fin du programme de test
printf ("\n\n\n\nPROGRAMME TERMINE");
getch();
return 0;
}
Donc voila, je vous serait très reconnaissant si un codeur pouvait m'expliquer comment faire marcher ce code.
Merci d'avance, et bonne continuations a tous!
7 juin 2007 à 00:47
6 juin 2007 à 17:11
Pour l'exe, je ne l'ai pas ajouté car en l'état, le programme ne sert à rien sauf à faire ch*er le monde ;-)
6 juin 2007 à 15:45
Il est vrai que 30km/h est large, mais prennons 10km, car si on fait des testes en étant a pieds il ne doit pas se bloquer.
Uniquement si la vitesse de déplacement est supérieure a la vitesse de marche.
Voila tout.
6 juin 2007 à 14:10
6 juin 2007 à 13:41
m'arrive de bidouiller mon GPS sur l'autoroute, même...
sans compter qu'il peut y avoir un "co-pilote" ^^
6 juin 2007 à 13:17
Je viens de trouver une utilité importante au code.
Il s'agit de détecter une vitesse GPS (dans le cas d'une utilisation en voiture) et de bloquer l'accès au clavier souris si on roule a une vitesse supérieure a 30km.
Des lors on évite ainsi des accidents graves.
Si la vitesse gps est + de 30km/h clavier souris bloquer si la vitesse gps est moins de30km/h le clavier et la souris sont a nouveau actif.
Voila. Super code en bref et non pas a but douteux lol (enfin pour ma part) !!!!!
Il y a juste qu'il serait intéressent d'ajouter la version compilé.
11 mai 2007 à 08:58
6 mai 2007 à 18:17
Dans les propriétes de mon projet, au niveau de l'onglet debug j'ai du décocher "Enable the Visual Studio hosting process".
Si quelqu'un peu me dire à quoi cela sert en temps normal je suis prenneur :)
6 mai 2007 à 17:49
private UserActivityHook _gHook = new UserActivityHook();
Puis d'appeler start pour enclencher, ou stop pour arrêter
this._gHook.Start(); // Start the process
this._gHook.Stop(); // Stop the process
6 mai 2007 à 17:19
Je viens de tester cette source et elle est excellente. Le projet marche trés bien mais il n'y a rien a faire je n'arrive pas a l'utiliser cette classe dans un nouveau projet VS2005. Il y a une manip spéciale à faire ou alors je fais ma quiche :o.
4 avril 2007 à 07:50
4 avril 2007 à 06:03
1 mars 2007 à 08:46
J'ai posté ce code à la demande sur le forum...
Il assez facile de l'adapter pour que l'ont puisse choisir si on veut bloquer soit la souris, soit le clavier ;-)
28 févr. 2007 à 21:06
28 févr. 2007 à 21:04
Bon bah reset quoi.
23 août 2006 à 19:17
23 août 2006 à 15:57