首页 > 系统相关 >C++禁用windows全局键盘

C++禁用windows全局键盘

时间:2023-11-07 11:24:00浏览次数:35  
标签:wParam return windows 钩子 C++ 键盘 msg keyboardHook

1. 使用Windows API函数调用来拦截键盘消息。

2. 创建一个键盘钩子来截取键盘消息。
3. 在钩子函数中,检测到特定按键事件时,阻止该事件执行。
4. 最终在程序退出时释放钩子。

下面是一个使用C++和Windows API来禁用Windows系统键盘的示例代码:

#include <iostream>
#include <Windows.h>

// 定义全局的钩子句柄
HHOOK keyboardHook;

// 键盘钩子回调函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0)
{
// 检查是否为按键按下事件
if (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN)
{
// 屏蔽按键事件,使其不再执行
return 1;
}
}

// 继续下一个钩子
return CallNextHookEx(keyboardHook, nCode, wParam, lParam);
}

int main()
{
// 创建键盘钩子
keyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
if (keyboardHook == NULL)
{
std::cout << "Failed to set keyboard hook." << std::endl;
return -1;
}

// 进入消息循环
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}

// 释放钩子
UnhookWindowsHookEx(keyboardHook);

return 0;
}


在上述代码中,SetWindowsHookEx函数用于创建键盘钩子,KeyboardProc函数是钩子的回调函数,在该函数中拦截了按键事件并返回1来阻止其执行。最后,通过消息循环来处理消息,并在程序退出时释放钩子。

请注意,由于该代码使用了系统级的钩子,需要以管理员权限运行才能正常工作。同时,禁用键盘功能会影响到整个系统的使用,请谨慎使用。

标签:wParam,return,windows,钩子,C++,键盘,msg,keyboardHook
From: https://www.cnblogs.com/ljna/p/17814624.html

相关文章

  • Windows ObjectType Hook 之 SecurityProcedure
    1、背景  ObjectTypeHook是基于ObjectType的一种深入的Hook,比起常用的SSDTHook更为深入。  有关ObjectType的分析见文章《Windows驱动开发学习记录-ObjectTypeHook之ObjectType结构相关分析》。  这里进行的Hook为其中之一的SecurityProcedure。文章实......
  • Android接入数字键盘并通过获取键盘输入的值控制App
    一、概述需求:现有一个需求,要求给Android系统接入一个数字键盘,用于方便工人操作(ps:因为触摸屏在特定场景下比键盘低效)需要:1.Android系统手机/pad需要能够连接数字键盘2.Android侧能够获取到手机键盘的按键值3.获取到键盘的按......
  • VMWare中Red Hat Enterprise Linux 6与Windows XP共享文件夹/共享目录
    虚拟机linux与widows主机的进行文件共享1.安装vmtoolsforlinux注意:如果Linux中已经装载有ISO文件,要先Eject。选择linux虚拟机--右键--installVMwaretools...选择linux虚拟机--右键–settings >CD-ROM>Edit>USEISOImage-选择vmware安装目录中linux.iso(注:如......
  • 怎样取消Windows 2003 server 意外关机提示
    怎样取消Windows2003server意外关机提示取消系统关机原因方法:(1)打开“开始”--“运行”命令,打开一个运行对话框,在其中输入“gpedit.msc”命令,来弹出组策略编辑界面。按回车后打开组策略编辑器。(2)在该界面中,用鼠标左键双击“计算机配置”文件夹----“管理模板”文件夹----“......
  • c/c++数据类型
    intunsignedintcharunsignedcharlonglonglongunsignedlongshortunsignedshortfloatdouble各种指针类型枚举类型struct结构类型union联合类型boolstring类 比如把数据类型比做盒子,定义类型就是存仓什么东西,假如int型把盒子分成4份......
  • C++模板显示指定类型时使用引用遇到的问题
    1.问题这里我想让模板函数接收int和char类型的参数,并进行相加,显示指定参数类型为int。第一个调用理论上会自动将char类型强转成int类型,后进行相加;第二个调用理论上会自动将int类型强转成char类型,后进行相加;但是报错Nomatchingfunctionforcallto'add_ab'template<typena......
  • QEMU for windows
    QEMUDownloadQEMU-QEMUQEMUcanbeinstalledusingMSYS2also.MSYS2usespacmantomanagepackages.First,followtheMSYS2installationprocedure.Thenupdatethepackageswithpacman-Syucommand.Nowchoosethepropercommandforyoursystemasfol......
  • windows环境charles过期处理方法
    首先进行reset删除原来的证书 输入mmc->文件>添加删除管理单元->找到相关证书进行删除  重复安装证书,手机再次下载安装新证书即可......
  • C++ 入门防爆零教程(上册)
    ##C++入门防爆零教程(上册)###### C++IntroductoryExplosionProofZeroTutorial(Volume$1$)编写者:美公鸡(洛谷账号:beautiful_chicken233,电话:$155****7747$,如有需要请随时联系)编写时间:$2023.10.5\sim?$地址:湖南省长沙市雨花区明升异城$11$栋$3902$出版社:美公鸡......
  • Redis 下载与安装 Windows版教程
    ​ 1、下载windows版本的redis由于redis官方更支持我们使用Linux版本;可以下载微软官方维护的支持 Windows平台的Redis安装包下载地址:Releases·microsoftarchive/redis·GitHubtporadowski大神也提供了支持Windows平台的Redis 安装包,目前仍在维护,目前最新版本......