模拟键盘鼠标事件有两种方法
实现一个鼠标或者键盘模拟器,可以完成很多功能,比如做一个简单的游戏外挂^_^。通常,模拟键盘鼠标事件有两种方法:
1.keybd_event, mouse_event
2.SendMessage, PostMessage
后者更强大,指定hwnd后可以后台发送对应的鼠标键盘消息,而后者只能够发送前台信息,也就是只能向前端窗口发送消息。
下面是简单的用法举例:
方法1:使用keybd_event, mouse_event
SetCursorPos(x,y);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
keybd_event(k,0,0,0);keybd_event(k,0,KEYEVENTF_KEYUP,0);
方法2:使用SendMessage, PostMessage
向当前程序的ID为IDC_EDIT1的输入框输入字符:
HWND tw2 = GetDlgItem(IDC_EDIT1)->m_hWnd;
::SendMessage(tw2,WM_CHAR,s[i],0);
向ID为IDOK的按钮发送鼠标单击事件:
HWND tw3 = GetDlgItem(IDOK)->m_hWnd;
::SendMessage(tw3,WM_LBUTTONDOWN,0,0);::SendMessage(tw3,WM_LBUTTONUP,0,0);
向打开的记事本输入字符
wnd = ::FindWindow("notepad", NULL);
wnd = FindWindowEx(wnd,0,"Edit",NULL); ::SendMessage(tw2,WM_CHAR,s[i],0);
如果说你不知道名字叫Edit,那么有下面的方法:
CWnd * pwnd = FindWindow("notepad", NULL);
CWnd * p2 = pwnd->GetTopWindow();wnd = p2->m_hWnd;
::SendMessage(tw2,WM_CHAR,s[i],0);
如果连notepad也不知道的话,你可以使用进程ID:遍历进程池得到想要的进程ID,然后找到指定ID的hwnd
struct EnumParam
{ HWND hMainWnd; DWORD dwProcessID; };
BOOL CALLBACK EnumWinProc(HWND hwnd, LPARAM lParam) { DWORD dwID; EnumParam* pep = (EnumParam*)lParam; GetWindowThreadProcessId(hwnd,&dwID); if (dwID == pep->dwProcessID) { pep->hMainWnd = hwnd; return 0; } return TRUE;
}EnumParam ep; STARTUPINFO si; PROCESS_INFORMATION pi; ep.hMainWnd = NULL; memset(&si, 0, sizeof(si)); si.cb = sizeof(STARTUPINFO); if (CreateProcess(NULL,"notepad.exe c:.txt", NULL,NULL,FALSE,0,NULL,NULL,&si,&pi)) { CloseHandle(pi.hThread); CloseHandle(pi.hProcess); ep.dwProcessID = pi.dwProcessId; while(!ep.hMainWnd) { EnumWindows((WNDENUMPROC)EnumWinProc, (long)&ep); //没有下面的一行,CPU的使用率会高居不下,同时其它的程序 //也会执行的很慢(包括程序启动的Notepad.exe) if (ep.hMainWnd==NULL) Sleep(20); } //EnumWindows((WNDENUMPROC)EnumWinProc, (long)&ep); } //此时的 ep.hMainWnd 就是你要的NodePad.exe窗口的句柄 //接下来由hwnd得到CWND *wnd = ep.hMainWnd;if(wnd == NULL) AfxMessageBox("Fasle");CWnd * tc = FromHandle(wnd);//获取wnd = tc->GetTopWindow()->m_hWnd;::SendMessage(tw2,WM_CHAR,s[i],0);
//OK啦
模拟键盘鼠标事件有两种方法相关推荐
- [转载]C#模拟键盘鼠标事件-SendKeys
C#模拟键盘鼠标事件-SendKeys 2007-09-18 15:138596人阅读评论(1)收藏举报 1.模拟键盘事件 System.Windows.Forms.SendKeys以下是 Sen ...
- Python ctypes 调用API函数模拟键盘鼠标事件
在Python编程中, 有时需要模拟键盘或鼠标事件, 自动操作计算机, 比如玩游戏等. 本文介绍使用ctypes模块调用API函数, 模拟键盘鼠标事件的方法. 目录 1.导入ctypes模块 2.通过 ...
- 中文顿号怎么输入_键盘上顿号怎么打出来 顿号用键盘打出来的两种方法
顿号是我们标点符号中经常会使用的一种,在纸上书写的时候,大家只需要写一个一个斜划线即可,可是在电脑上输入,很多人往往不知道如何输入顿号.那么顿号在键盘上怎么打?顿号怎么打出来?下面脚本之家小编就为大家 ...
- strlen函数的用法及模拟实现strlen函数的两种方法
strlen函数的用法及模拟实现strlen函数的两种方法 一.strlen函数的用法 strlen的简单应用 二.指针模拟实现strlen函数 三.递归模拟实现strlen函数 一.strlen函数 ...
- js循环添加事件的两种方法
js循环添加事件的两种方法 选择下拉列表中的一个li将文本传到框中 问题:写此二级菜单时用到的方法不好,对此进行优化 原始js代码: <script>// 思路:1.点击下拉框a时,ul中 ...
- windows模拟键盘鼠标事件DirectX游戏中
有一些使用DirectX接口的游戏程序,它们在读取键盘操作时绕过了windows的消息机制,而使用DirectInput.这是因为有些游戏对实时性控制的要求比较高,比如赛车游戏,要求以最快速度响应键盘 ...
- 在Activity中响应ListView内部按钮的点击事件的两种方法
转载:http://www.cnblogs.com/ivan-xu/p/4124967.html 最近交流群里面有人问到一个问题:如何在Activity中响应ListView内部按钮的点击事件,不要在 ...
- [转]C# winForm 自定义鼠标样式的两种方法
本文转自:http://www.cnblogs.com/hzbzxm/archive/2008/09/15/1291104.html 以前试过在WinForm中自定义鼠标样式,结果显示出来的鼠标变成单 ...
- Cocos2d-x 处理双击事件的两种方法
在cocos2d-x的开发过程中有些时候也是需要用到双击的事件处理,那么由于在cocos2d-x中没有实现对双击的事件的处理,那么我们就需要自己用代码实现. 下面介绍两种方式实现双击事件的处理. (一 ...
最新文章
- Spring Framework 5.2.5 发布,增加对 Java 14 的支持
- 一篇blog带你了解java中的锁
- mybatisplus修改单个属性_Mybatis Plus 中 参数传递的优化之路
- 对讲业务对讲过程中的几个状态
- 财经法规税收征收管理法律制度练习题二
- html转换pdf软件,html转换成高质量的PDF文件[跨平台开源软件]
- 蓝桥杯 基础练习 01字串(水题)
- R语言实现故障树定量与定性分析——以GJB-Z 768A-1998 故障树分析指南图5.37为例
- 【渝粤教育】电大中专沟通技巧_1作业 题库
- 强化学习(8):Asynchronous Advantage Actor-Critic(A3C)算法
- 嘉楠科技多位高管退出,知情人称管理层夺权内斗
- 用计算机写高中数学程序框图,画“程序框图”,高中数学最实用基本技能之一...
- 如何将逐小时数据处理为逐日数据
- Juniper SRX340防火墙配置
- 如何关闭/屏蔽百度搜索结果的置顶广告?(无耻的百度关了又自己开启)
- 2023年直播行业的困境是什么?未来有哪些发展趋势?
- SmtpJS发送邮件教程
- anr用户无响应问题的解决
- 如何在高压系统中实现电源和信号线的电气隔离
- 粒子群算法 PSO(Particle Swarm Optimization)——原理及实现
热门文章
- ipv4和ipv6与int互转通用处理方式
- OpenCV Mat与uchar*指针相互转换赋值
- isDebugEnabled作用
- cublas_学习笔记2
- Cookie跨域setDomain
- 彻底搞懂递归的时间复杂度
- Python-子列表最大长度
- 华为p10android版本,华为P10系列什么时候升级安卓8.0?官方给出答案
- Android HorizontalScrollView和ScrollView 水平滚动 垂直滚动
- Scaled-YOLOv4: Scaling Cross Stage Partial Network 论文翻译