模拟鼠标点击:

1、这里是鼠标左键按下和松开两个事件的组合即一次单击:

mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )

2、模拟鼠标右键单击事件: 
mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 )

3、两次连续的鼠标左键单击事件 构成一次鼠标双击事件: 
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 ) 
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )

4、使用绝对坐标 
MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0

需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,如果dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点--直接设定绝对坐标并单击 
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0); 
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0);

其中X,Y分别是你要点击的点的横坐标和纵坐标

模拟键盘输入:

void EnterString(const char* text)
{bool bShift = false;size_t length = strlen(text);for(size_t index = 0;index < length;index++){int val = text[index];if(val >= 97 && val <= 122)    //小写a-z{val -= 32;bShift = false;}else if(val >= 65 && val <= 90) //大写A-Z{bShift = true;}else if(val >= 48 && val <= 57) //数字0-9{bShift = false;}else //特殊符号{switch(val){case '`':val = 192;bShift = false;break;case '~':val = 192;bShift = true;break;case '!':val = '1';    //!和1在同一个键盘,使用同一个键盘码,以下相同bShift = true;break;case '@':val = '2';    //@和2在同一个键盘,使用同一个键盘码,以下相同bShift = true;break;case '#':val = '3';bShift = true;break;case '$':val = '4';bShift = true;break;case '%':val = '5';bShift = true;break;case '^':val = '6';bShift = true;break;case '&':val = '7';bShift = true;break;case '*':val = '8';bShift = true;break;case '(':val = '9';bShift = true;break;case ')':val = '0';bShift = true;break;case '-':val = 189;bShift = false;break;case '=':val = 187;bShift = false;break;case '_':val = 189;bShift = true;break;case '+':val = 187;bShift = true;break;case '[':val = 219;bShift = false;break;case '{':val = 219;bShift = true;break;case ']':val = 221;bShift = false;break;case '}':val = 221;bShift = true;break;case '\\':val = 220;bShift = false;break;case '|':val = 220;bShift = true;break;case ';':val = 186;bShift = false;break;case ':':val = 186;bShift = true;case '\'':val = 222;bShift = false;break;case '\"':val = 222;bShift = true;break;case ',':val = 188;bShift = false;break;case '<':val = 188;bShift = true;break;case '.':val = 190;bShift = false;break;case '>':val = 190;bShift = true;break;case '/':val = 191;bShift = false;break;case '?':val = 191;bShift = true;break;default:break;}}if(bShift)keybd_event(VK_SHIFT,0,0,0);keybd_event(val,0,0,0);keybd_event(val,0,KEYEVENTF_KEYUP,0);if(bShift)keybd_event(VK_SHIFT,0,KEYEVENTF_KEYUP,0);}
}

但是要注意,如果用户默认是中文输入法,那我们得先想办法切换到英文输入法才行。

到网上看到一篇文章,说的是在WinCE下的法:

http://www.cnblogs.com/iVincentFeng/archive/2010/04/20/KeyboardInputSimulation_SendMessage_keybd_event_PostKeybdMessage.html

但是后来发现,如果我们想写入中文字符,怎么办呢??

我开始的思路是像控制输入法的切换状态,来实现。。。 其实,我们只需找到我们需要输入的控件,然后填入中文字符就行了。

我用"按键精灵"找到控件的名称等相关信息,然后用下面的代码来遍历,之后填充数据即可。

 wchar_t sPath[]=_T("niha风范股份围观");CWnd * pWnd = FindWindow(NULL,_T("另存为"));CString sCtrlName;CWnd *pedit;CString filename;wchar_t *buf=new wchar_t[512];if(pWnd){CWnd *pwnd=pWnd->GetWindow(GW_CHILD);//枚举保存对话框的所有子控件while(pwnd!=NULL){::GetClassName(pwnd->GetSafeHwnd(),buf,512);//得到枚举的控件是什么类型的,CString str=buf;   str.TrimRight();           if(str==_T("ComboBoxEx32"))//如果枚举到保存文件名的EDIT{pedit=pwnd;//保存EDIT句柄用来发消息pwnd->SendMessage(WM_SETTEXT,sizeof(sPath)/sizeof(wchar_t),(LPARAM)(void*)sPath);UpdateData(FALSE);break;}pwnd = pwnd->GetNextWindow();}}delete [] buf; SetCursorPos(512+r2.left,366+r2.top);//按钮【保存】mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );

想想,如果把坐标的操作全部转化为控件指针来处理,也许更安全,这样,不管客户那边的分辨率和中途改变窗口,我们的操作依然正确。

下面是附带的一点代码:

 if(str=="保存(&S)")//如果是保存按钮{   lstrcpy(BUF,(LPCTSTR)sPath);//sPath表示我们要设置的对话框浏览目录//发消息设置文件名EDIT为我们的路径名,完成第二步pedit->SendMessage(WM_SETTEXT,0,(LPARAM)BUF);//发消息模拟点击保存按钮,完成第三步::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONDOWN,0,0);::SendMessage(pwnd->GetSafeHwnd(),WM_LBUTTONUP,0,0);}
//发消息还原EDIT里的文件名,完工!
pedit->SendMessage(WM_SETTEXT,0,(LPARAM)filename);

附带一个链接,自认为比较好的一篇文章:点击打开链接

OK ,就此为止,有什么不正确的地方,欢迎大家指正,共同进步..!!!

VC 模拟鼠标和键盘输入相关推荐

  1. java模拟器键盘输入_Java模拟鼠标和键盘输入

    用途 在电脑(Windows/Mac)上模拟鼠标和键盘输入 Mac运行需要打开相关权限,详见文末说明. 效果图 代码 import java.awt.*; import java.awt.event. ...

  2. python模拟键盘输入视频_python教程-模拟鼠标和键盘输入

    大家可能知道,有的情形下,如果我们需进行自动化操作的应用程序不提供相对应的的接口,就难以通过Python直接调用API来做到自动化.在此类情形下,Python也并非压根没有办法,我们可以通过模拟键盘和 ...

  3. C++实现鼠标控制 封装常见的模拟鼠标、键盘的操作函数

    API 或 MFC 视窗程序 里 有 函数, 例如 API 函数 设位置: BOOL SetCursorPos( int x, int y); 参数是屏幕坐标x,y 头文件 Winuser.h 链接库 ...

  4. C# WPF 中用代码模拟鼠标和键盘的操作

    C# WPF 中用代码模拟鼠标和键盘的操作 原文:C# WPF 中用代码模拟鼠标和键盘的操作 原文地址 C#开发者都知道,在Winform开发中,SendKeys类提供的方法是很实用的.但是可惜的是, ...

  5. Android 使用 sendevent 模拟鼠标和键盘事件

    Android 使用 sendevent 模拟鼠标和键盘事件 模拟原理是对驱动发送消息,就是linux里面的input子系统. 命令格式: sendevent /dev/input/eventX [t ...

  6. 控制台模拟鼠标、键盘操作

    控制台模拟鼠标.键盘操作 模拟鼠标.键盘操作,能让命令行顿然强大,想想,制作批处理版屏幕键盘等都不在话下(已制作过,效果很不错).虽然这也跟CUI无关.本教程教会你如何让命令行模拟鼠标.键盘的操作. ...

  7. Python - Python 模拟鼠标和键盘进行基本操作

    文章目录 Python - Python 模拟鼠标和键盘进行基本操作 相关内容:Python 实用内容 1.安装模块pyautogui 2.基本操作 Python - Python 模拟鼠标和键盘进行 ...

  8. selenium模拟鼠标和键盘操作的基本方法

    前言 前面已经把环境搭建好了,这从这篇开始,正式学习selenium的webdriver框架.我们平常说的 selenium自动化,其实它并不是类似于QTP之类的有GUI界面的可视化工具,我们要学的是 ...

  9. pythonselenium教程模拟鼠标和键盘_【02篇】python+selenium实现Web自动化:鼠标操作和键盘操作!...

    一.前言 最近问我自动化的人确实有点多,个人突发奇想:想从0开始讲解python+selenium实现Web自动化测试,请关注博客持续更新! 这是python+selenium实现Web自动化第二篇博 ...

最新文章

  1. 将Nodelist快速转换为Array数组
  2. VS中添加命令行参数的方法
  3. springboot-RequestMappingHandlerMapping
  4. java发送http跨域_跨域发送HTTP请求详解
  5. ubuntu安装composer
  6. Python基于seaborn绘制喜欢的热力图,不同色系一览
  7. 大气校正后的ndvi_ENVI下高分一号WFV数据FLAASH大气校正
  8. 02.二叉树打印.md
  9. 一个小小的Java表白小代码
  10. 加速区块链改革促进区域经济转型升级 ——中国·平泉负氧离子产业园正式落成
  11. Oracle中的空值问题
  12. 使用ESP8266驱动TFT显示屏
  13. 区块链之开发命令行操作模块
  14. 北航和北理工计算机专业哪个好,北理和北航哪个好?
  15. (CVPR-2020)GaitPart:基于时间部分的步态识别模型(一)
  16. 【DL】第 4 章:目标检测和图像分割
  17. windows+MAC系统使用-快捷键
  18. 苹果CEO库克: 请无所畏惧,做最不愿接受现状的人丨2018年毕业典礼演讲
  19. 手机闹钟软件测试用例,手机测试用例
  20. 收集整理2007年国考面试真题大汇集(转)

热门文章

  1. 自写sort排序函数(支持重载排序规则)
  2. 利用json实现vivo x20手机评论的爬取
  3. bam文件读取_bam格式文件处理大全(一)
  4. Mat类型中的CV_8UC3、CV_32FC3以及对应的迭代器模板参数Vec3b,Vec3f的一点自己的理解
  5. Go-使用wmi获取硬盘smart信息并解析
  6. 【Games101】图形的基础变换 总结
  7. Mac电脑安装win7系统,解决前端IE浏览器兼容性问题
  8. Python小记---你不在意的小细节
  9. 推荐一款全能测试开发神器!1分钟快速上手!
  10. NPOI 操作Excel学习总结