基本信息
源码名称:c#利用钩子屏蔽键盘,防止用户切出
源码大小:0.18M
文件格式:.rar
开发语言:C#
更新时间:2019-10-14
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
public delegate int HookProc(int nCode, int wParam, IntPtr lParam);//定义全局钩子过程委托,以防被回收(钩子函数原型)
HookProc KeyBoardProcedure;
//定义键盘钩子的相关内容,用于截获键盘消息
static int hHook = 0;//钩子函数的句柄
public const int WH_KEYBOARD = 13;
//钩子结构函数
public struct KeyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
//安装键盘钩子
public void HookStart()
{
if (hHook == 0)
{
//实例化一个HookProc对象
KeyBoardProcedure = new HookProc(Form2.KeyBoardHookProc);
//创建线程钩子
hHook = Win32API.SetWindowsHookEx(WH_KEYBOARD, KeyBoardProcedure, Win32API.GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);
//如果设置线程钩子失败
if (hHook == 0)
{
HookClear();
}
}
}
//取消钩子
public void HookClear()
{
bool rsetKeyboard = true;
if (hHook != 0)
{
rsetKeyboard = Win32API.UnhookWindowsHookEx(hHook);
hHook = 0;
}
if (!rsetKeyboard)
{
throw new Exception("取消钩子失败!");
}
}
本实例利用钩子实现对键盘win e,win d,alt tab,ctrl alt del等快捷键的屏蔽,在锁屏工具上面用的较多,使用户不能切出应用程序,这个是我做考试系统防止用户切出设计的demo,在地址栏输入123然后点前往可以取消键盘屏蔽。
public delegate int HookProc(int nCode, int wParam, IntPtr lParam);//定义全局钩子过程委托,以防被回收(钩子函数原型)
HookProc KeyBoardProcedure;
//定义键盘钩子的相关内容,用于截获键盘消息
static int hHook = 0;//钩子函数的句柄
public const int WH_KEYBOARD = 13;
//钩子结构函数
public struct KeyBoardHookStruct
{
public int vkCode;
public int scanCode;
public int flags;
public int time;
public int dwExtraInfo;
}
//安装键盘钩子
public void HookStart()
{
if (hHook == 0)
{
//实例化一个HookProc对象
KeyBoardProcedure = new HookProc(Form2.KeyBoardHookProc);
//创建线程钩子
hHook = Win32API.SetWindowsHookEx(WH_KEYBOARD, KeyBoardProcedure, Win32API.GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);
//如果设置线程钩子失败
if (hHook == 0)
{
HookClear();
}
}
}
//取消钩子
public void HookClear()
{
bool rsetKeyboard = true;
if (hHook != 0)
{
rsetKeyboard = Win32API.UnhookWindowsHookEx(hHook);
hHook = 0;
}
if (!rsetKeyboard)
{
throw new Exception("取消钩子失败!");
}
}