资源简介
windows后台监听键盘事件,使用hook(钩子)做的,记得先编hook.dll,再去编示例程序,hook.dll,会把监听到的按键写到hook文件夹下面的log.txt文件里面
代码片段和文件信息
#include
#include
#include
#include “resource.h“
#pragma comment(lib“DbgHelp.lib“)
//---------------------------用户界面部分-------------------------------------------------
BOOL CALLBACK DialogProc(HWND hWnd UINT uMsg WPARAM wParam LPARAM lParam);
BOOL OnHook();
BOOL OffHook();
BOOL EnablePrivilege();
int WINAPI WinMain(HINSTANCE hInstance HINSTANCE hPrevInstance LPSTR lpCmdLine int nShowCmd)
{
HWND hWnd;
MSG msg;
// 创建窗体
hWnd = CreateDialog(hInstance MAKEINTRESOURCE(IDD_DIALOG) NULL DialogProc);
ShowWindow(hWnd SW_SHOW);
// 消息循环
while (GetMessage(&msg NULL 0 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
// 对话框消息出来程序
BOOL CALLBACK DialogProc(HWND hWnd UINT uMsg WPARAM wParam LPARAM lParam)
{
switch (uMsg)
{
case WM_INITDIALOG: // 初始化对话框:
EnablePrivilege();
break;
case WM_COMMAND: // 点击按钮
switch (LOWORD(wParam))
{
case IDC_BUTTON_ON: // 点击挂钩按钮
OnHook();
break;
case IDC_BUTTON_OFF: // 点击脱钩按钮
OffHook();
break;
default:
break;
}
break;
case WM_CLOSE: // 关闭窗口
DestroyWindow(hWnd);
break;
case WM_DESTROY: // 窗口销毁
PostQuitMessage(0);
break;
}
return FALSE;
}
//---------------------------------------------------钩子部分------------------------------------------------------------
typedef LRESULT(CALLBACK *pCallWndProc)(int WPARAM LPARAM);
HHOOK hHook;
BOOL OnHook() // 挂钩
{
// 加载钩子dll中的假Windows消息循环
HMODULE hDll = LoadLibrary(TEXT(“hookdll.dll“));
pCallWndProc CallWndProc = (pCallWndProc)GetProcAddress(hDll “CallWndProc“);
//// 创建淄博热力进程
//TCHAR szFileName[MAX_PATH];
//ZeroMemory(&szFileName MAX_PATH * sizeof(TCHAR));
//GetCurrentDirectory(MAX_PATH szFileName);
//_tcscat_s(szFileName TEXT(“\\App\\app.exe“));
//STARTUPINFO si;
//ZeroMemory(&si sizeof(si));
//si.cb = sizeof(si);
//PROCESS_INFORMATION pi;
//ZeroMemory(&pi sizeof(pi));
//CreateProcess(szFileName TEXT(“ --enable-npapi --enable-eloamPlugin“) NULL NULL FALSE 0 NULL NULL &si &pi);
////WaitForSingleobject(pi.hProcess INFINITE);
// 挂钩
hHook = SetWindowsHookExW(WH_KEYBOARD_LL CallWndProc GetModuleHandle(TEXT(“hookdll.dll“)) 0);
int error = GetLastError();
char message[100] = ““;
char buf[50] = ““;
_itoa_s(error buf 10);
strcat_s(message “挂钩!错误码:“);
strcat_s(message buf);
MessageBoxA(NULL message “钩子“ MB_OK);
return TRUE;
}
BOOL OffHook() // 脱钩
{
UnhookWindowsHookEx(hHook);
MessageBox(NULL TEXT(“脱钩成功!“) TEXT(“钩子“) MB_OK);
return TRUE;
}
// -----------------------------------------提升权限-------------------------------------------------------------------
BOOL EnablePrivilege()
{
HANDLE hToken;
if (OpenProcessToken(GetCurrentProcess() TOKEN_ADJUST_PRIVILEGES &hToken))
{
TOKEN_PRIVILEGES tkp;
LookupPrivilegeValue(NULL SE_DEBUG_NAME &tkp.Privileges[0].Luid);//修改进程权限
tkp.PrivilegeCount = 1;
tkp.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
AdjustTokenPrivileges(hToken FALSE &tkp sizeo
- 上一篇:icp C++实现包含测试数据
- 下一篇:《C语言库函数速查手册》
相关资源
- icp C++实现包含测试数据
- 多项式计算
- 诊所信息管理系统C++课程设计报告
- DICOM医学图像格式转换的C++实现
- C++代码提取LBP特征
- 个人银行账户管理程序C++
- 编写并调试一个模拟的进程调度程序
- C++编写的有界面的扫雷游戏
- 遗传算法.cpp
- C++编写的第三人称视角小球Ploygon风格
- C++ Primer Plus第6版源码.zip
- 小甲鱼98集全套数据结构视频
- c++制作黄金矿工
- C/C++:Windows编程—代码获取本地所有
- c++ 课程设计报告多个题目合集 完整
- C++课设高校人员信息管理系统
- c++实现哈夫曼树的编译码
- c++24期网盘链接
- C++ Primer 第六版 书上程序及课后习题
- 集合的并交差运算
- 免费的LeetCode-cpp题解(C++版本)大全
- Ubuntu下的扩展卡尔曼滤波EKF程序(C
- 2019华为软件精英挑战赛C++ 源码实现
- 基于遗传算法的带容量限制的P-media
- C++实现小游戏flappy bird
- C++builder实现计算器
- MFC 2010编写 C++ 求1元4次方程解,含1元
- c++版创建并输出二叉树完整代码
- c++练习题2015
- 最新传智播客C/C++第五期完整视频 R
评论
共有 条评论