简单的 windows外挂程序
来源:互联网 发布:淘宝退保证金流程 编辑:程序博客网 时间:2024/05/16 18:40
在windows应用中,有时候需要拦截送给别的程序的鼠标和键盘事件,这时候就可以使用外挂。外挂程序可以应用于一些游戏中,用来重复一些简单机械的动作。下面我来讲讲如何实现这种技术。
首先,包含下列 code:
#define _WIN32_WINNT 0x0400
#include <windows.h>
#include <winuser.h>
#include <winable.h>
//#include <windows.h>
#define WH_KEYBOARD_LL 13
#define WH_MOUSE_LL 14
typedef struct tagKBDLLHOOKSTRUCT {
DWORD vkCode;
DWORD scanCode;
DWORD flags;
DWORD time;
DWORD dwExtraInfo;
} KBDLLHOOKSTRUCT, FAR *LPKBDLLHOOKSTRUCT, *PKBDLLHOOKSTRUCT;
#pragma comment( lib, "user32.lib" )
这部分程序把windows没有公开的结构和macro进行定义。
第二步,定义拦截窗口以及处理函数:
HHOOK hMouseHook,hKbdHook;
CWnd *pWnd;
HKL dwhkl;
__declspec(dllexport) LRESULT CALLBACK MouseEvent (int nCode, WPARAM wParam, LPARAM lParam)
{
MOUSEHOOKSTRUCT * pMouseStruct = (MOUSEHOOKSTRUCT *)lParam;
if (pMouseStruct != NULL)
{
//TRACE("Mouse position X = %d Mouse Position Y = %d\n", pMouseStruct->pt.x,pMouseStruct->pt.y);
pWnd->SendMessage(WM_CAPTURE_MOUSE_MSG,pMouseStruct->pt.x,pMouseStruct->pt.y);
}
return CallNextHookEx(hMouseHook,nCode,wParam,lParam);
}
__declspec(dllexport) LRESULT CALLBACK KeyboardEvent (int nCode, WPARAM wParam, LPARAM lParam)
{
KBDLLHOOKSTRUCT* pKbdStruct=(KBDLLHOOKSTRUCT*)lParam;
if(pKbdStruct!=NULL)
{
//TRACE("keyboard:%04x\n",pKbdStruct->vkCode);
pWnd->SendMessage(WM_CAPTURE_KEYBOARD_MSG,pKbdStruct->vkCode,(long)pKbdStruct);
}
return CallNextHookEx(hKbdHook,nCode,wParam,lParam);
}
其中,dwhkl为硬件键盘布局。
第三步,加入对鼠标和键盘消息的处理函数:
.h
afx_msg void OnMessageMouseCapture(WPARAM,LPARAM);
afx_msg void OnMessageKeyboardCapture(WPARAM,LPARAM);
.cpp
ON_MESSAGE(WM_CAPTURE_MOUSE_MSG,OnMessageMouseCapture)
ON_MESSAGE(WM_CAPTURE_KEYBOARD_MSG,OnMessageKeyboardCapture)
并按自己的需要实现这两个函数。
第四步:在程序或者窗口初始化时,初始化键盘外挂。
dwhkl=LoadKeyboardLayout("00000409",KLF_ACTIVATE);
hMouseHook = SetWindowsHookEx (
WH_MOUSE_LL,
(HOOKPROC) MouseEvent,
AfxGetInstanceHandle(),
NULL
);
hKbdHook= SetWindowsHookEx (
WH_KEYBOARD_LL,
(HOOKPROC) KeyboardEvent,
AfxGetInstanceHandle(),
NULL
);
我写了一个简单的示范程序,用于定时快速的点击用户指定的一个坐标,感兴趣的同学可以下载,简单界面如附件。
(不好意思,不知道怎么attach源程序,试着用了代码片,不知道能不能行,<script src="https://code.csdn.net/snippets/472775.js"></script>)
- 简单的 windows外挂程序
- Windows程序外挂编程示例
- C语言的图形界面?——简单外挂程序
- 模拟外挂的程序
- 简单的windows程序
- 一个简单的外挂制作
- 一个外挂的简单分析
- 史上最简单的windows程序
- 最简单的Windows程序
- 最简单的Windows程序
- 最简单的windows程序
- 最简单的windows 程序
- 监控Hbase是否可用的外挂程序
- Delphi外挂辅助技术入门篇、Windows扫雷程序示例
- 最简单的WINDOWS程序详细解析.
- 一个超简单的Windows程序
- 一个简单的C# WINDOWS服务程序
- 理解简单的Windows Hello World程序
- 2014-09-22 现在很容易难过
- OC之@property @synthesize用法详解
- 会分级一会就看
- Android实战技巧:深入解析AsyncTask
- Linux Performance Tools
- 简单的 windows外挂程序
- windows server 2012 活动目录部署系列(四)创建额外域控
- hdu 1176 - 免费馅饼
- Android-View 的刷新机制
- hdu 5038 Grade(简单模拟求解)2014 ACM/ICPC Asia Regional 北京 Online
- No bean named 'uMapper' is defined
- 十二、ContentProvider和Uri详解
- UIScorllView 控件实现图片缩放功能
- 实验室 第一周总结(9.22)