简单魔兽改键的基本原理及基于MFC实现

主要原理:通过线程钩子截获魔兽进程的键盘消息,然后模拟我们所需要的按键。软件设计基于MFC和用到的一些windowsAPI。

1.     界面布局和要求功能


软件界功能少见面简单,主要有小键盘和自定义的改键。(玩dota的都知道)

要求:编辑框只能显示一个键的字符且大写,按空格键时最好显示“空”,按键定义不能重复,显示改键开启状态。

 

2.     动态链接库

软件的核心是键盘钩子。先要写个动态链接库DLL。主要函数SetWindowsHookEx,参见MSDN。DLL主要有cpp文件和def输出函数定义文件。

 

将用户界面设置的改建前和改建后的按键字符保存在两个字符数组中。

由于钩子的回调函数LRESULTCALLBACK KeyboardProc在dll中,而用户的改键设置保存在主程序中,所以我们在启动改键时需要将改键的设置传入dll中,通过共享数据块保存。

 

Dll中的函数在主函数中的声明,否则无法调用

在主程序StdAfx.h中:

_declspec(dllimport) void setHook(HWND hwnd,char *pre,char *fin);
_declspec(dllimport) void deleHook();
_declspec(dllimport) void chat(int flag);
#pragma comment(lib,"War3hook.lib")//链接dll编译生成的lib文件

war3hook.def:主要是输出这三个函数然后在主程序中调用

LIBRARY War3hook
EXPORTS
setHook	@2
deleHook @3
chat @4

war3hook.cpp:

#include <windows.h>

#pragma   data_seg("MYSEC")     
char prek[11]={0};
char fink[11]={0};//改键设置保存
HWND g_hWnd=NULL;//保存魔兽窗口句柄
int chaton=0;//监听聊天状态
#pragma   data_seg()
#pragma   comment(linker, "/section:MYSEC,rws")
//共享数据块定义

HHOOK g_hKeybo
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值