c++学习笔记- 自制魔兽显血改键
来源:互联网 发布:淘宝咸鱼在哪找 编辑:程序博客网 时间:2024/04/30 16:20
源代码下载地址:点击打开链接
显血:
模拟键盘按键'['和']'来达到显血效果。
void CMsxxDlg::OnTimer(UINT nIDEvent) {// TODO: Add your message handler code here and/or call defaultif(nIDEvent==1){hWnd=::GetForegroundWindow();//获取当前窗口句柄::GetWindowText(hWnd,wText,50);if(strcmp(wText,"Warcraft III")==0)//如果是魔兽窗口则模拟按键{if(flag==0){ keybd_event(219,0,0,0); keybd_event(221,0,0,0); flag=1;}}else{flag=0;}}CDialog::OnTimer(nIDEvent);}
改键:
用到WH_KEYBOARD_LL钩子,先创建一个MFC规则的dll将功能函数都放到里面。
先在头文件中添加变量和函数
int v1,v2,v4,v5,v7,v8;//修改关联小键盘的虚拟键码HHOOK g_hHook;HINSTANCE g_hInstanceHandle=NULL;extern "C" _declspec(dllexport) BOOL StartHook(int t1,int t2,int t4,int t5,int t7,int t8);//初始化钩子extern "C" _declspec(dllexport) BOOL StopHook();//停止钩子
在cpp中实现函数功能
1.钩子回调函数
LRESULT CALLBACK KeyboardProc(int nCode,WPARAM wParam,LPARAM lParam){//先获取当前窗口看是否为魔兽窗口char str[30];::GetWindowText(::GetForegroundWindow(),str,30);if(strcmp(str,"Warcraft III")==0){if(nCode==HC_ACTION){LPKBDLLHOOKSTRUCT lpk=(LPKBDLLHOOKSTRUCT)lParam;//1if(lpk->vkCode==v1){if(wParam==WM_KEYDOWN){keybd_event(97,0,0,0);}elseif(wParam==WM_KEYUP){keybd_event(97,0,KEYEVENTF_KEYUP,0);}return 1;}//2if(lpk->vkCode==v2){if(wParam==WM_KEYDOWN){keybd_event(98,0,0,0);}elseif(wParam==WM_KEYUP){keybd_event(98,0,KEYEVENTF_KEYUP,0);}return 1;}//4if(lpk->vkCode==v4){if(wParam==WM_KEYDOWN){keybd_event(100,0,0,0);}elseif(wParam==WM_KEYUP){keybd_event(100,0,KEYEVENTF_KEYUP,0);}return 1;}//5if(lpk->vkCode==v5){if(wParam==WM_KEYDOWN){keybd_event(101,0,0,0);}elseif(wParam==WM_KEYUP){keybd_event(101,0,KEYEVENTF_KEYUP,0);}return 1;}//7if(lpk->vkCode==v7){if(wParam==WM_KEYDOWN){keybd_event(103,0,0,0);}elseif(wParam==WM_KEYUP){keybd_event(103,0,KEYEVENTF_KEYUP,0);}return 1;}//8if(lpk->vkCode==v8){if(wParam==WM_KEYDOWN){keybd_event(104,0,0,0);}elseif(wParam==WM_KEYUP){keybd_event(104,0,KEYEVENTF_KEYUP,0);}return 1;}}}LRESULT lRetVal=CallNextHookEx(g_hHook,nCode,wParam,0);return lRetVal;}
2.初始化钩子
extern "C" _declspec(dllexport) BOOL StartHook(int t1,int t2,int t4,int t5,int t7,int t8){v1=t1;v2=t2;v4=t4;v5=t5;v7=t7;v8=t8;g_hHook=SetWindowsHookEx(WH_KEYBOARD_LL,(HOOKPROC)KeyboardProc,g_hInstanceHandle,0);return TRUE;}
3.卸载钩子
extern "C" _declspec(dllexport) BOOL StopHook(){if(g_hHook){return UnhookWindowsHookEx(g_hHook);}return TRUE;}
最后在主程序中调用dll时将修改6个小键盘的虚拟键码传递进来就行了。
- c++学习笔记- 自制魔兽显血改键
- 《自制编程语言》学习笔记
- android学习笔记之自制简易浏览器
- 《30天自制操作系统》学习笔记_helloos0
- 自制内存拷贝函数学习笔记
- 《30天自制操作系统》学习笔记
- 30天自制操作系统学习笔记
- 《30天自制操作系统》学习笔记Day1
- 《30天自制操作系统》学习笔记Day2
- (笔记)魔兽22总结
- 魔兽
- 《30天自制操作系统》学习笔记--第0天
- 《30天自制操作系统》学习笔记--第1天
- 《30天自制操作系统》学习笔记--第2天
- 《30天自制操作系统》学习笔记--第3天
- 《30天自制操作系统》学习笔记--第4天
- 《30天自制操作系统》学习笔记--第5天
- 《30天自制操作系统》学习笔记--第6天
- httpURLConnection详解
- bat命令大全
- 24点算法
- 由物件取得類別名、由類別名取得物件
- map集合的遍历
- c++学习笔记- 自制魔兽显血改键
- UVa-1400 - "Ray, Pass me the dishes!"
- ProjectEuler 13
- STM32 CAN
- Microsoft Active Directory
- 字符串String和对象包装类的基本功能
- 微软等面试100题答案精选
- oracle参数与参数文件小结
- hdu 4547(tarjan LCA)