/**************************************************
** Project:DisabeldWinKeys
** File:Main.cpp
** Edition:v1.0.0 Demo
** Coder:KingsamChen [MDSA Group]
** Last Modify:2008-7-27
**************************************************/
// 学MFC的搞了一个酱紫的头文件
#include "stdfax.h"
// 全局Hook ID
HHOOK g_HookHwnd = NULL ;
// WH_KEYBOARD_LL好像需要将实例句柄映射出去
// 具体自己看MSDN吧
HINSTANCE hInst;
LRESULT CALLBACK Wndproc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam);
LRESULT CALLBACK MyHookFun(int nCode, WPARAM wParam, LPARAM lParam);
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow)
{
WNDCLASSEX ws; // 定义结构 注意:这里用的是WNDCLASSEX
ws.cbSize = sizeof(WNDCLASSEX); // 返回结构大小 这个选项是Ex结构中新增的
ws.hbrBackground = (HBRUSH)COLOR_BACKGROUND; // 背景颜色
ws.hCursor = LoadCursor(NULL,IDC_ARROW); // 鼠标指针样式
ws.hIcon = LoadIcon(NULL,IDI_APPLICATION); // 图标样式
ws.hIconSm = LoadIcon(NULL,IDI_APPLICATION); // 小图标 同样是Ex新增的
ws.hInstance = hInstance; // 当前实例句柄
ws.lpfnWndProc = Wndproc; // 回调函数指针
ws.lpszClassName = "MyWindows"; // 窗口类名
ws.lpszMenuName = NULL; // 菜单名
ws.style = CS_DBLCLKS; // 接受双击窗体消息 //CS_HREDRAW | CS_VREDRAW;
ws.cbClsExtra = 0; // 无额外类存储
ws.cbWndExtra = 0; // 无额外窗体存储
if (!RegisterClassEx(&ws)) // Ex的结构必须要Ex的注册函数
{
return 0; // 注册失败直接返回0
}
hInst = hInstance;
HWND hWnd;
hWnd = CreateWindowEx(
0, // 扩展样式
"MyWindows", // 类名,就是注册时的类名
"For Example", // 标题栏文字
WS_OVERLAPPEDWINDOW, // 样式 各属性均用默认值
CW_USEDEFAULT, // 窗体X值
CW_USEDEFAULT, // 窗体Y值
CW_USEDEFAULT, // 窗体宽度
CW_USEDEFAULT, // 窗体高度
NULL, // 父窗口句柄
NULL, // 功能菜单句柄
hInstance, // 应用程序实例句柄
NULL // 建立参数
);
if (!hWnd)
{
return 0; // 失败返回
}
ShowWindow(hWnd, SW_SHOWNORMAL); // 显示窗体
UpdateWindow(hWnd); //更新窗体
MSG msg;
// 消息主循环
while(GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return (int)msg.wParam;
}
// 主回调处理函数
LRESULT CALLBACK Wndproc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam)
{
// 以下两个仅用于测试Hook安装和卸载的返回值
BOOL bL = NULL;
BOOL bLresult = NULL;
switch(uMsg)
{
case WM_DESTROY:
// 可以卸载钩子了
// 参数就是SetWindowsHookEx返回的ID
bLresult = UnhookWindowsHookEx(g_HookHwnd);
// ASSERT测试
// 当exp为False,弹出错误框
// 需要afx.h支持
ASSERT(bLresult);
PostQuitMessage(0);
break;
case WM_CREATE:
// 安装钩子
g_HookHwnd = SetWindowsHookEx(WH_KEYBOARD_LL, MyHookFun, hInst, 0);
// 测试.同上
ASSERT(g_HookHwnd);
break;
case WM_LBUTTONDBLCLK:
MessageBox(hwnd,"Um...KingsamChen is a Fucker","Fuker",MB_OK);
break;
default:
return DefWindowProc(hwnd,uMsg,wParam,lParam);
break;
}
return 0;
}
// 钩子子程
LRESULT CALLBACK MyHookFun(int nCode, WPARAM wParam, LPARAM lParam)
{
// 这个Structure包含了键盘的信息
/*typedef struct {
DWORD vkCode;
DWORD scanCode;
DWORD flags;
DWORD time;
ULONG_PTR dwExtraInfo;
} KBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;*/
// 我们只需要那个vkCode
PKBDLLHOOKSTRUCT pVirKey = (PKBDLLHOOKSTRUCT)lParam;
// MSDN说了,nCode < 0的时候别处理
if (nCode >= 0)
{
// 按键消息
switch(wParam)
{
case WM_KEYDOWN:
case WM_SYSKEYDOWN:
case WM_KEYUP:
case WM_SYSKEYUP:
switch(pVirKey->vkCode)
{
case VK_LWIN:
case VK_RWIN:
return 1; // 吃掉消息
break;
}
break;
}
}
return CallNextHookEx(g_HookHwnd, nCode, wParam, lParam);
}
相关推荐
一个很简短的屏蔽(不是卸载)低级键盘钩子的程序及解释
今天遇到了一个程序,运行时自动
Windows下利用HOOK和进程挂起实现的桌面锁屏
Windows下利用HOOK和进程挂起实现的桌面锁屏
C++:实现拦截输入法(附完整源码)
C++:实现拦截输入法(附完整源码)
Windows操作系统下 使用c++ WIN32API禁用控制台最小化和关闭按钮
#include<Windows.h> //屏蔽控制台最小按钮和关闭按钮 HWND hwnd = GetConsoleWindow(); HMENU hmenu = GetSystemMenu(hwnd, false); RemoveMenu(hmenu, SC_CLOSE, MF_BYCOMMAND); ...
【Windows】键盘禁用(屏蔽)Win快捷键
键盘上Win按键极容易产生误触,网上一堆禁用方法都是改注册表,改360安全中心等等,操作繁琐且不容易改回去。经过测试并不需要那么麻烦,只需按下键盘上的 fn+win即可完成屏蔽win按键效果,再按一次即可恢复win按键(仅针对部分键盘有用)。
Windows hook “alt + tab”键
最近项目需要,要动态开关win键和alt + tab键。屏蔽这两个系统热键需要全局hook底层键盘,捕获这两个系统热键,相关示例代码如下: #define _WIN32_WINNT 0x0500 #include <stdio.h> #include <stdlib.h> #include <windows.h> HHOOK g_kb_hook ...
c语言hook键盘fn键,钩子编程(HOOK) 屏蔽所有按键鼠标及系统功能键
作者 : 卿笃军上篇文章已经详细的讲解了全局钩子的安装,下面我们增强一下钩子的功能,实现屏蔽所有按键鼠标与系统功能键。要实现这个功能,我们需要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子"。鼠标钩子:实现屏蔽所有鼠标点击操作。低级键盘钩子:实现屏蔽所有键盘操作,包括屏蔽功能键(Alt+F4,Win,Alt+Tab, Alt+Esc,Ctrl+Esc....)注意:不包括Ctrl+Alt+De...
低级键盘钩子屏蔽Win键、Alt+Tab键的响应
如果你是基于Windows操作系统做系统集成的,你可能希望你的最终产品独占系统资源。你希望规范用户行为,比如你不希望用户通过按Ctrl+Alt+Del终止某个进程,或者按下Win键弹出开始菜单, 或者按下Alt+Tab组合键切换到别的应用程序。笔者已有相关一篇文章《Win2K/NT下屏蔽Ctrl+Alt+Del的响应》,介绍了如何通过GINA编程接口屏蔽Ctrl+Alt+Del的响应。作为续篇...
vc禁用win键、alt+tab键
vc++屏蔽alt+tab和win系统热键
屏蔽Win键及Ctrl+Esc的完整实现模块与例程
在Windows操作系统中,热键(如Win键和Ctrl+Esc)为用户提供了快速访问系统功能的便捷方式。然而,在某些特定应用场景下,这些默认热键可能造成干扰,甚至引发严重后果。例如,在全屏游戏、视频演示或代码编写过程中,意外按下Win键会导致窗口切换或开始菜单弹出,从而中断当前任务。为了提升用户体验与操作稳定性,开发一个可屏蔽这些热键的功能模块具有重要意义。本章将从Windows热键的基本概念入手,分析其工作机制和潜在影响,为后续章节中钩子机制的引入与实现奠定理论基础。
C# WinForm中屏蔽特殊功能键的技术实现
本文还有配套的精品资源,点击获取 简介:在Windows系统中,Win键、Ctrl+Alt+Del和Alt+F4等组合键具有特定的功能,如打开“开始”菜单、启动任务管理器和关闭窗口。在开发C# WinForm应用程序时,出于安全或特定需求可能需要屏蔽这些键。本文将介绍如何在C#中实现对这些特殊功能键的屏蔽和释放。其中,Win键可以通过设置键盘钩子实现屏蔽,而Alt+F4可以...
钩子编程(HOOK) 屏蔽全部按键、鼠标及系统功能键 (4)
摘要:上篇文章《钩子编程(HOOK) 安装系统全局钩子》已经具体的解说了全局钩子的安装。本文将增强一下钩子的功能。实现屏蔽全部按键鼠标与系统功能键。要实现这个功能。须要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子"。鼠标钩子——实现屏蔽全部鼠标点击操作。低级键盘钩子——...
c语言hook键盘fn键,钩子编程(HOOK) 障蔽所有按键鼠标及系统功能键
钩子编程(HOOK) 屏蔽所有按键鼠标及系统功能键作者 : 卿笃军上篇文章已经详细的讲解了全局钩子的安装,下面我们增强一下钩子的功能,实现屏蔽所有按键鼠标与系统功能键。要实现这个功能,我们需要安装两个全局钩子,"鼠标钩子" 与 "低级键盘钩子"。鼠标钩子:实现屏蔽所有鼠标点击操作。低级键盘钩子:实现屏蔽所有键盘操作,包括屏蔽功能键(Alt+F4,Win,Alt+Tab, Alt+Esc,Ctrl+...
基于全局钩子实现鼠标键盘屏蔽与系统行为监控的技术实践
htmltable {th, td {th {pre {简介:全局钩子是Windows系统中用于拦截和处理系统级事件的重要技术,通过SetWindowsHookEx API实现对键盘和鼠标消息的监听与控制。本实践内容讲解如何使用全局钩子屏蔽鼠标键盘输入、记录可能导致电脑“死机”的操作行为,适用于系统监控、故障诊断等场景。同时强调其在安全与隐私方面的潜在风险,提醒开发者合法合规使用。
【超级鼠标键盘锁】之HOOK钩子屏蔽鼠标和Ctrl+Alt+Del、Win+L之外的按键
最初,于2018年初步实现了windows7 64位系统下的鼠标键盘锁。然而,随着时光的流逝,微软已经放弃了对windows7系统的更新与维护,windows10系统已经不断地普及,是时候研究一下win10系统下的鼠标键盘锁了。 ①HOOK钩子dll实现 HOOK钩子动态链接库部分的实现,直接在VS中建立空工程,新建文件KeymsLockHook.cpp和KeymsLockHook.def。在KeymsLockHook.cpp中进行编程,如下 #include<Windows.h> #inclu
win7下全局低层键盘钩子实现
上一篇博客中介绍了一般全局键盘钩子,但是有几个缺点,一是代码不够简洁,需要两部分实现,二是效果不佳,对于64位进程无能为力。这篇博客介绍的低层键盘钩子,克服了以上缺点,在win7系统下做过测试,效果非常不错。 实现的原理是通过SetWindowsHookEx接口安装低层键盘钩子,低层键盘钩子由于是最底层的,系统的按键消息会优先发到安装低层键盘钩子线程的消息队列中,让它获得优先处理消息的能力,通过
3040




被折叠的 条评论
为什么被折叠?



