vc实现魔兽3改键程序
实现功能:
1.qq对战平台自动不断尝试进入房间
2.显血功能
3.小键盘数字键 7 8 4 5 1 2改键功能,可映射到任意字符键。
程序大致思路为:
1。建dll,安装消息钩子函数:hkb=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)KeyboardProc,theApp.m_hInstance,0);
2。钩子函数为:
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam) { if (nCode==HC_ACTION) { PMSG msg=(PMSG)lParam; if (msg->message == WM_KEYDOWN || msg->message == WM_KEYUP) { char m_7[2],m_8[2],m_4[2],m_5[2],m_1[2],m_2[2]; char dllPath[256]; ::GetModuleFileName(theApp.m_hInstance,dllPath,256); CString s1; s1.Format("%s",dllPath); s1 = s1.Left(s1.ReverseFind('//')+1); ::GetPrivateProfileString("setup","m_7","Q", m_7,2,s1+"//config.ini"); ::GetPrivateProfileString("setup","m_8","Q", m_8,2,s1+"//config.ini"); ::GetPrivateProfileString("setup","m_4","Q", m_4,2,s1+"//config.ini"); ::GetPrivateProfileString("setup","m_5","Q", m_5,2,s1+"//config.ini"); ::GetPrivateProfileString("setup","m_1","Q", m_1,2,s1+"//config.ini"); ::GetPrivateProfileString("setup","m_2","Q", m_2,2,s1+"//config.ini"); if(m_7[0] == '/0'){ m_7[0] = ' '; } if(m_8[0] == '/0'){ m_8[0] = ' '; } if(m_4[0] == '/0'){ m_4[0] = ' '; } if(m_5[0] == '/0'){ m_5[0] = ' '; } if(m_1[0] == '/0'){ m_1[0] = ' '; } if(m_2[0] == '/0'){ m_2[0] = ' '; } if(msg->wParam == m_7[0]) { msg->wParam=VK_NUMPAD7; } else if(msg->wParam==m_8[0]) { msg->wParam=VK_NUMPAD8; } else if(msg->wParam==m_4[0]) { msg->wParam=VK_NUMPAD4; } else if(msg->wParam==m_5[0]) { msg->wParam=VK_NUMPAD5; } else if(msg->wParam==m_1[0]) { msg->wParam=VK_NUMPAD1; } else if(msg->wParam==m_2[0]) { msg->wParam=VK_NUMPAD2; } } } LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam ); /* if (nCode==HC_ACTION) { if(::GetKeyState(0x12) >= 0){ ::keybd_event(VK_LMENU,0,0,0); } } */ return RetVal; }
3。建立一个c++ MFC工程
4。注册系统热键,crtl+alt+g 进入房间使用,ctrl+alt+j 显血使用
id=::GlobalAddAtom( "#123" ); if(!::RegisterHotKey( m_hWnd,id,MOD_CONTROL| MOD_ALT,'G' ) ) MessageBox( "hot key register failed!" ); id=::GlobalAddAtom( "#456" ); if(!::RegisterHotKey( m_hWnd,id,MOD_CONTROL| MOD_ALT,'J' ) ) MessageBox( "hot key register failed!" );
5.热键处理函数:
LRESULT CWC3AssistantDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam) { // TODO: Add your specialized code here and/or call the base class switch(message) { case WM_HOTKEY: if (wParam==123) { if(go_hall_status ==0){ go_hall_status = 1; }else{ go_hall_status = 0; } } else if(wParam == 456){ alt_status = 1; } break; } return CDialog::WindowProc(message, wParam, lParam); }
6。ontimer函数为:
void CWC3AssistantDlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if(go_hall_status == 1){ //进入房间; mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0); //::sleep(500); keybd_event( VK_RETURN , 0 , 0 , 0); CDialog::OnTimer(nIDEvent); } if(alt_status == 1){ keybd_event(219, 0, 0, 0); keybd_event(221, 0, 0, 0); alt_status = 0; //::AfxMessageBox("[]"); } }
7。最后增加一个按牛事件函数,调用dll的安装钩子函数即可。
需要代码的朋友可以加我qq:1265877
vc实现魔兽3改键程序相关推荐
- 魔兽争霸3游戏改键原理
GitHub - dejavud/war3key: War3Key is a hotkey utility for Warcraft III. GitHub上的程序源代码,别人写的,我只是看代码分析他 ...
- 魔兽改键助手1.2(附VC源代码)
魔兽改键助手 1.2 更新内容: (1)使用全局WH_KEYBOARD_LL 无需使用dll文件. (2)智能判断聊天模式,如果正在聊天,则取消改键. (3)支持托盘. (4)支持1.24版 更新计 ...
- 关于魔兽改键。。。类似11的
事情是这样的--闲的无聊玩了一盘卡尔的DOTA,结果发现卡尔的按键真的是十分XX啊--于是就在各个网站找那种类似于11的魔兽改键工具,不是改快捷键,而是直接按照技能的位置来改键的.可是没有找到,而11 ...
- c# 改键-之魔兽改键(Hook)
玩过dota的人都知道这游戏要用到一个辅助软件,即改键的软件,由于dota这款游戏的快捷键众多且杂乱无章,所以就需要一款改键的软件把那些快捷键改成我们顺手的,比如我们可以把P改成Q,把B改成W,把C改 ...
- 强大的魔兽改键--可以像11对战平台一样,自动进入BN!支持命令改键;
限定改键在A-Z,0-9,TAb,空格,小键盘的7,8,4,5,1,2:F1-F4; 增加Caps Lock和~两个键的版本,取消F1帮助响应; 强大的改键器: 1.高效改键,游戏聊天不冲突:检测游戏 ...
- 简单魔兽改键的基本原理及基于MFC实现
主要原理:通过线程钩子截获魔兽进程的键盘消息,然后模拟我们所需要的按键.软件设计基于MFC和用到的一些windowsAPI. 1. 界面布局和要求功能 软件界功能少见面简单,主要有小键盘和自定 ...
- 魔兽重置版改键+喊话
魔兽重置版改键+喊话 原创软件,绝无广告 附代码 **长总求:自己写的改键+喊话软件 ** 最近在玩魔兽争霸3重置版 别的不评价了,没有改键功能非常麻烦,自己做了一个. 好坏就不评论了,就当给当年补票 ...
- 扯一下关于魔兽改键的蛋
五一放了几天,难得不用呆在实验室,于是就去了趟将来工作的城市,四处走了走,感觉还不错,但这只会让我心中更加纠结,唉! 算了,不说废话了,有半个月没写博客了,其实也不是没东西可写,反而是要写的太多了,不 ...
- c#实现魔兽(warIII)中显血和改键功能 (附源码)(代码参考sohighthesky)
因为自己每周没事都会打打魔兽争霸,网上下的改键精灵用起来又不太顺手,就动念头自己写一个.边试着写边在网上找资料.最后从百度又搜回到CSDN看到sohighthesky大大写的改键精灵:http://b ...
最新文章
- Android项目Tab类型主界面大总结 Fragment+TabPageIndicator+ViewPager
- 4月书讯(下)| 美亚4.8星评,又一本口碑相传的著作来了
- 禁用任何未使用的端口com_分享连接思科路由器控制台端口的正确设置
- HDU 1712 裸分组dp
- Python每日一练0018
- sqlplus 远程连接 oracle 12514 错误
- hdu 1584蜘蛛牌(DFS)
- linux 设置git ip,centos7安装gitlab并更改端口IP地址
- [Bzoj2243][SDOI2011]染色(线段树树剖)
- 李洋疯狂C语言之用递归解决李白喝酒问题(附填空题解法)
- mac怎么查node版本_Node.js 微服务实践:基于容器的一站式命令行工具链
- c语言 list 使用数组来实现_C|用数组或链表来实现队列这种抽象数据类型
- 十天学会单片机和c语言编程,十天学会单片机和C语言编程
- windows server 2008r2下搭建***服务器
- win10/win7安装Rational Rose 2007(解决虚拟光驱加载不了bin文件问题)
- Windows清理助手ARSWP
- VS-code输入感叹号没有提示
- Adding a Timepicker to jQuery UI Datepicker
- 第 11 章 一 执行引擎概述、解释器、JIT编译器-热点代码优化
- 递归:汉罗塔问题的程序实现