屏蔽键盘任意键的DLL文件制作
来源:互联网 发布:linux php shell exec 编辑:程序博客网 时间:2024/05/22 08:13
在网上找到一个不错的方法,帖出来看看
头文件maskkey.h:
/**//********************************************************************/
/**//* 文件名: MaskKey.h */
/**//* */
/**//* 功能: 标准 DLL 导出函数头文件, 在使用该DLL的程序中包含此文件 */
/**//* */
/**//* 作者: 卢培培 (goodname008) 时间: 2004.8.21 */
/**//* */
/**//* BLOG: http://blog.csdn.net/goodname008 */
/**//********************************************************************/
DECLSPEC_IMPORT
BOOL
WINAPI
StartMaskKey( LPDWORD lpdwVirtualKey, int nLength, BOOL bDisableKeyboard = FALSE );
DECLSPEC_IMPORT
BOOL
WINAPI
StopMaskKey();
/**//* 文件名: MaskKey.h */
/**//* */
/**//* 功能: 标准 DLL 导出函数头文件, 在使用该DLL的程序中包含此文件 */
/**//* */
/**//* 作者: 卢培培 (goodname008) 时间: 2004.8.21 */
/**//* */
/**//* BLOG: http://blog.csdn.net/goodname008 */
/**//********************************************************************/
DECLSPEC_IMPORT
BOOL
WINAPI
StartMaskKey( LPDWORD lpdwVirtualKey, int nLength, BOOL bDisableKeyboard = FALSE );
DECLSPEC_IMPORT
BOOL
WINAPI
StopMaskKey();
实现文件maskkey.cpp:
/**//********************************************************************/
/**//* 文件名: MaskKey.cpp */
/**//* */
/**//* 功能: 标准 DLL ---- 利用底层键盘钩子实现屏蔽键盘任意按键 */
/**//* */
/**//* 作者: 卢培培 (goodname008) 时间: 2004.8.21 */
/**//* */
/**//* BLOG: http://blog.csdn.net/goodname008 */
/**//********************************************************************/
// 导出函数列表
// StartMaskKey
// StopMaskKey
#define _WIN32_WINNT 0x0500 // 设置系统版本, 确保可以使用底层键盘钩子
#include "windows.h"
// 全局变量
LPDWORD g_lpdwVirtualKey = NULL; // Keycode 数组的指针
int g_nLength = 0; // Keycode 数组的大小
BOOL g_bDisableKeyboard = FALSE; // 是否屏蔽整个键盘
HINSTANCE g_hInstance = NULL; // 模块实例句柄
HHOOK g_hHook = NULL; // 钩子句柄
// DLL 入口函数
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
...{
// 保存模块实例句柄
g_hInstance = (HINSTANCE)hModule;
// 在进程结束或线程结束时卸载钩子
switch (ul_reason_for_call)
...{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_PROCESS_DETACH:
case DLL_THREAD_DETACH:
delete g_lpdwVirtualKey;
if (g_hHook != NULL) UnhookWindowsHookEx(g_hHook);
break;
}
return TRUE;
}
// 底层键盘钩子函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
...{
// 禁用键盘的某个按键, 如果 g_bDisableKeyboard 为 TRUE 则禁用整个键盘
if (nCode == HC_ACTION)
...{
if (g_bDisableKeyboard) return TRUE;
KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
LPDWORD tmpVirtualKey = g_lpdwVirtualKey;
for (int i = 0; i < g_nLength; i++)
...{
if (pStruct->vkCode == *tmpVirtualKey++)
return TRUE;
}
}
// 传给系统中的下一个钩子
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
/**//********************************************************************/
/**//* 开始屏蔽键盘按键 */
/**//* */
/**//* 参数: */
/**//* lpdwVirtualKey Keycode 数组的指针 */
/**//* nLength Keycode 数组的大小 */
/**//* bDisableKeyboard 是否屏蔽整个键盘 */
/**//* */
/**//* 返回值: TRUE 成功, FALSE 失败 */
/**//********************************************************************/
BOOL WINAPI StartMaskKey(LPDWORD lpdwVirtualKey, int nLength, BOOL bDisableKeyboard = FALSE)
...{
// 如果已经安装键盘钩子则返回 FALSE
if (g_hHook != NULL) return FALSE;
// 将用户传来的 keycode 数组保存在全局变量中
g_lpdwVirtualKey = (LPDWORD)malloc(sizeof(DWORD) * nLength);
LPDWORD tmpVirtualKey = g_lpdwVirtualKey;
for (int i = 0; i < nLength; i++)
...{
*tmpVirtualKey++ = *lpdwVirtualKey++;
}
g_nLength = nLength;
g_bDisableKeyboard = bDisableKeyboard;
// 安装底层键盘钩子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, NULL);
if (g_hHook == NULL) return FALSE;
return TRUE;
}
/**//********************************************************************/
/**//* 停止屏蔽键盘按键 */
/**//* */
/**//* 参数: (无) */
/**//* */
/**//* 返回值: TRUE 成功, FALSE 失败 */
/**//********************************************************************/
BOOL WINAPI StopMaskKey()
...{
// 卸载钩子
if (UnhookWindowsHookEx(g_hHook) == 0) return FALSE;
g_hHook = NULL;
return TRUE;
}
/**//* 文件名: MaskKey.cpp */
/**//* */
/**//* 功能: 标准 DLL ---- 利用底层键盘钩子实现屏蔽键盘任意按键 */
/**//* */
/**//* 作者: 卢培培 (goodname008) 时间: 2004.8.21 */
/**//* */
/**//* BLOG: http://blog.csdn.net/goodname008 */
/**//********************************************************************/
// 导出函数列表
// StartMaskKey
// StopMaskKey
#define _WIN32_WINNT 0x0500 // 设置系统版本, 确保可以使用底层键盘钩子
#include "windows.h"
// 全局变量
LPDWORD g_lpdwVirtualKey = NULL; // Keycode 数组的指针
int g_nLength = 0; // Keycode 数组的大小
BOOL g_bDisableKeyboard = FALSE; // 是否屏蔽整个键盘
HINSTANCE g_hInstance = NULL; // 模块实例句柄
HHOOK g_hHook = NULL; // 钩子句柄
// DLL 入口函数
BOOL APIENTRY DllMain(HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
...{
// 保存模块实例句柄
g_hInstance = (HINSTANCE)hModule;
// 在进程结束或线程结束时卸载钩子
switch (ul_reason_for_call)
...{
case DLL_PROCESS_ATTACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_PROCESS_DETACH:
case DLL_THREAD_DETACH:
delete g_lpdwVirtualKey;
if (g_hHook != NULL) UnhookWindowsHookEx(g_hHook);
break;
}
return TRUE;
}
// 底层键盘钩子函数
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
...{
// 禁用键盘的某个按键, 如果 g_bDisableKeyboard 为 TRUE 则禁用整个键盘
if (nCode == HC_ACTION)
...{
if (g_bDisableKeyboard) return TRUE;
KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
LPDWORD tmpVirtualKey = g_lpdwVirtualKey;
for (int i = 0; i < g_nLength; i++)
...{
if (pStruct->vkCode == *tmpVirtualKey++)
return TRUE;
}
}
// 传给系统中的下一个钩子
return CallNextHookEx(g_hHook, nCode, wParam, lParam);
}
/**//********************************************************************/
/**//* 开始屏蔽键盘按键 */
/**//* */
/**//* 参数: */
/**//* lpdwVirtualKey Keycode 数组的指针 */
/**//* nLength Keycode 数组的大小 */
/**//* bDisableKeyboard 是否屏蔽整个键盘 */
/**//* */
/**//* 返回值: TRUE 成功, FALSE 失败 */
/**//********************************************************************/
BOOL WINAPI StartMaskKey(LPDWORD lpdwVirtualKey, int nLength, BOOL bDisableKeyboard = FALSE)
...{
// 如果已经安装键盘钩子则返回 FALSE
if (g_hHook != NULL) return FALSE;
// 将用户传来的 keycode 数组保存在全局变量中
g_lpdwVirtualKey = (LPDWORD)malloc(sizeof(DWORD) * nLength);
LPDWORD tmpVirtualKey = g_lpdwVirtualKey;
for (int i = 0; i < nLength; i++)
...{
*tmpVirtualKey++ = *lpdwVirtualKey++;
}
g_nLength = nLength;
g_bDisableKeyboard = bDisableKeyboard;
// 安装底层键盘钩子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, g_hInstance, NULL);
if (g_hHook == NULL) return FALSE;
return TRUE;
}
/**//********************************************************************/
/**//* 停止屏蔽键盘按键 */
/**//* */
/**//* 参数: (无) */
/**//* */
/**//* 返回值: TRUE 成功, FALSE 失败 */
/**//********************************************************************/
BOOL WINAPI StopMaskKey()
...{
// 卸载钩子
if (UnhookWindowsHookEx(g_hHook) == 0) return FALSE;
g_hHook = NULL;
return TRUE;
}
DEF文件 maskkey.def:
EXPORTS
StartMaskKey @1
StopMaskKey @2
StartMaskKey @1
StopMaskKey @2
- 屏蔽键盘任意键的DLL文件制作
- 屏蔽系统热键的DLL文件制作
- 底层DLL屏蔽任意键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- 利用底层键盘钩子屏蔽任意按键
- dll文件的c++制作dll文件的c++制作
- dll文件的c++制作
- 利用lseek制作任意大小的文件
- 屏蔽所有键盘控制网页的键
- 屏蔽键盘所有键的javascript代码
- C#创建文件夹
- 批量生成非动画bci图片的工具
- TCP与UDP的区别
- JavaScript实例教程之把主页设为首页、加到收藏夹里
- CSDN原来也支持Live Writer的
- 屏蔽键盘任意键的DLL文件制作
- 链表编译的错误
- 关于spring 2.0自定义xml 标记 (一 主要的相关类)
- 关于spring 2.0自定义xml 标记 (二 如何实现)
- A STAR的实现和应用(c++版) 上
- 我能算到的阶乘有多大(八)
- (谭版)1 C语言概述
- (谭版)2 程序的灵魂—算法
- 《程序员》11期即将上市,带您领略Vista开发冲击波