DÉSACTIVATION CLAVIER ET SOURIS

Nikoui Messages postés 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 - 23 août 2006 à 15:57
cs_volcelest Messages postés 4 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 24 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.

https://codes-sources.commentcamarche.net/source/39149-desactivation-clavier-et-souris

cs_volcelest Messages postés 4 Date d'inscription samedi 25 janvier 2003 Statut Membre Dernière intervention 24 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és 18 Date d'inscription jeudi 19 janvier 2006 Statut Membre Dernière intervention 22 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és 1 Date d'inscription dimanche 5 mars 2006 Statut Membre Dernière intervention 19 septembre 2008
19 sept. 2008 à 15:00
Merci beaucoup ,

Je me sert de ce code pour vérouiller des pc de supervision industrielle .

Trés bonne source
Utilisateur anonyme
12 août 2008 à 15:44
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és 4 Date d'inscription jeudi 13 mars 2008 Statut Membre Dernière intervention 20 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);

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é.
panterga Messages postés 67 Date d'inscription dimanche 27 mars 2005 Statut Membre Dernière intervention 5 février 2012 1
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és 7 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 23 juin 2010
6 juil. 2007 à 20:04
Merci bidou !
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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és 7 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 23 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és 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
5 juil. 2007 à 21:15
Euh, ce code c'est du C#, pas du C!
Rien avoir :-/
sylvafilms Messages postés 7 Date d'inscription jeudi 5 juillet 2007 Statut Membre Dernière intervention 23 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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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és 6 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 11 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és 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
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és 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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és 6 Date d'inscription mercredi 26 juillet 2006 Statut Membre Dernière intervention 11 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és 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
11 mai 2007 à 08:58
Bhaal_DtC Messages postés 7 Date d'inscription dimanche 4 septembre 2005 Statut Membre Derniè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és 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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és 7 Date d'inscription dimanche 4 septembre 2005 Statut Membre Derniè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és 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
4 avril 2007 à 07:50
Non (cf. les deux premiers commentaires)
xxx007xxx Messages postés 5 Date d'inscription samedi 20 janvier 2007 Statut Membre Dernière intervention 15 novembre 2007
4 avril 2007 à 06:03
Est-ce qu'il block les keys modifier :shift-alt-ctrl?
cs_Bidou Messages postés 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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és 81 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 22 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és 81 Date d'inscription lundi 26 septembre 2005 Statut Membre Dernière intervention 22 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és 5486 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
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és 794 Date d'inscription vendredi 24 septembre 2004 Statut Membre Dernière intervention 19 août 2008 13
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é ?)
Rejoignez-nous