Désactivation clavier et souris

Soyez le premier à donner votre avis sur cette source.

Vue 26 713 fois - Téléchargée 2 412 fois

Description

Désactiver souris et clavier C# / Disable mouse and keyboard C#

J'ai un léger doute sur la réelle utilitée de ce programme, mais comme ça a été demandé sur le forum... et bien je le mets quand même à disposition.
Ce programme permet donc de désactiver la souris et/ou le clavier... j'espère qu'il sera utilisé de manière "saine" et pas pour faire des logiciels douteux.

Voilà, l'idée générale est de faire un hook global pour intercepter clavier et souris.

Source / Exemple :


private UserActivityHook _gHook = new UserActivityHook();
this._gHook.Start();	// Start the process
this._gHook.Stop();	// Stop  the process

Conclusion :


Je tiens à préciser que ce code est largement inspiré de celui de "pocjoc" que vous pouvez retrouver sur CodeProject :
http://www.codeproject.com/samples/ForTheKids.asp

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
4
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
24 mars 2011

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
Messages postés
18
Date d'inscription
jeudi 19 janvier 2006
Statut
Membre
Dernière intervention
22 avril 2010

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
Messages postés
1
Date d'inscription
dimanche 5 mars 2006
Statut
Membre
Dernière intervention
19 septembre 2008

Merci beaucoup ,

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

Trés bonne source
Messages postés
1
Date d'inscription
mardi 12 août 2008
Statut
Membre
Dernière intervention
12 août 2008

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é :)
Messages postés
4
Date d'inscription
jeudi 13 mars 2008
Statut
Membre
Dernière intervention
20 mars 2008

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é.
Afficher les 28 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.