使用SendInput模拟键盘和鼠标动作

简介: 使用SendInput模拟键盘和鼠标动作
HDC hdc;
 HWND hWnd;
 TCHAR sz[] = L"大家好";
 // 查找记事本程序的窗口句柄
 hWnd = ::FindWindow(L"Notepad", NULL);
 // 如果记事本程序在运行,就向其客户区绘制文本
int nCount=0;
 while(::IsWindow(hWnd)&&nCount<=10)  // IsWindow函数用于判断一个窗口句柄是否有效
 {
  hdc = ::GetDC(hWnd);
  ::TextOut(hdc, 10, 10, sz, wcslen(sz));
  ::ReleaseDC(hWnd, NULL);
  ::Sleep(1000);
  /*INPUT minput[2];
  ZeroMemory( &minput, sizeof(INPUT)*2);
  minput[0].type=INPUT_MOUSE;
  minput[0].mi.dx=100;
  minput[0].mi.dy=100;
  minput[0].mi.mouseData=0;
  minput[0].mi.dwFlags=MOUSEEVENTF_RIGHTDOWN;
  minput[1].type=INPUT_MOUSE;
  minput[1].mi.dx=100;
  minput[1].mi.dy=100;
  minput[1].mi.mouseData=0;
  minput[1].mi.dwFlags=MOUSEEVENTF_RIGHTUP;
  UINT uRet=SendInput( 2, minput, sizeof(INPUT) );*/
  INPUT kbinput[5];
  ZeroMemory( &kbinput, sizeof(INPUT)*5 );
  kbinput[0].type = INPUT_KEYBOARD;
  kbinput[0].ki.wVk = 'Z';
  kbinput[1].type = INPUT_KEYBOARD;
  kbinput[1].ki.wVk = 'W';
  kbinput[2].type = INPUT_KEYBOARD;
  kbinput[2].ki.wVk = 'J';
  //kbinput[2].ki.dwFlags = KEYEVENTF_KEYUP;
  kbinput[3].type=INPUT_MOUSE;
  kbinput[3].mi.dx=100;
  kbinput[3].mi.dy=100;
  kbinput[3].mi.mouseData=0;
  kbinput[3].mi.dwFlags=MOUSEEVENTF_RIGHTDOWN;
  kbinput[4].type=INPUT_MOUSE;
  kbinput[4].mi.dx=100;
  kbinput[4].mi.dy=100;
  kbinput[4].mi.mouseData=0;
  kbinput[4].mi.dwFlags=MOUSEEVENTF_RIGHTUP;
  UINT uRet = SendInput( 5, kbinput, sizeof(INPUT) );
  cout<<uRet;
  if(uRet<=0)
  {
   DWORD dwErr=::GetLastError();
   cout<<dwErr;
  }
nCount++;
 }
 ::MessageBox(NULL, L"记事本程序已经退出", L"04UseDC", MB_OK);


相关文章
|
传感器 监控 API
基于STM32的智能灌溉系统设计与实现
基于STM32的智能灌溉系统设计与实现
1386 1
|
决策智能
Multi-Agent实践第2期: @智能体 你怎么看?
我们将带你体验如何实现一个更具互动性的多智能体群聊:你可以直接"@"提及某个智能体来引发对话。
|
SQL 人工智能 算法
Android性能优化之应用瘦身(APK瘦身)
Android性能优化之应用瘦身(APK瘦身)
|
弹性计算 Ubuntu Linux
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS
阿里云服务器一键安装Docker社区版教程,基于系统运维管理OOS自动化部署。支持Ubuntu 22.04/20.04、CentOS 7.7-7.9及Alibaba Cloud Linux 3.2104 LTS。前提条件:ECS实例需运行中且有公网。步骤:选择Docker扩展并安装,验证成功通过命令`docker -v`查看版本号。
1100 79
WK
|
人工智能 算法 C语言
为什么C语言不是人工智能领域的首选编程语言?
尽管多种编程语言在人工智能领域均有应用,Python却因其独特优势成为了首选。Python的简洁语法提高了开发效率与易用性;其庞大的生态系统,尤其是丰富的AI库和框架如TensorFlow、PyTorch等,简化了算法实现过程;Python适用于快速原型设计与实验,加速项目迭代;良好的跨平台兼容性减少了配置负担;庞大的社区支持与丰富的文档资源便于学习和技术交流。尽管如此,C语言在性能等方面仍具优势,在特定场景下不可或缺。
WK
728 60
|
运维 Linux 网络协议
7大板块,200+面试题,助你拿下offer | 运维工程师面试宝典
在2020阿里云峰会上,阿里云智能总裁张建锋表示,阿里云今年再招5000人,大规模引进顶尖科技人才。7月9日 19:00-21:30 阿里云开发者社区首场“Offer 5000”直播开启!15位团队技术大牛在线招人,《阿里云技术面试红宝书》助你拿下Offer!马上投递简历: https://developer.aliyun.com/special/offerday01,在此,小编奉上运维工程师面试宝典,帮你拿下好工作!
14130 0
7大板块,200+面试题,助你拿下offer | 运维工程师面试宝典
安装notepad++ 安装Python Python环境变量的数值。怎样在notepad++上运行Python的代码
这篇文章提供了在notepad++上安装和配置Python环境的详细步骤,包括安装Python、配置环境变量、在notepad++中设置Python语言和快捷编译方式,以及解决可能遇到的一些问题。
安装notepad++ 安装Python Python环境变量的数值。怎样在notepad++上运行Python的代码
|
缓存 负载均衡 应用服务中间件
Nginx反向代理优化
教你如何做好Nginx反向代理优化
675 5
|
Android开发
09. 【Android教程】表格布局 TableLayout
09. 【Android教程】表格布局 TableLayout
465 0
|
NoSQL
技术分享:如何使用GDB调试不带调试信息的可执行程序
【8月更文挑战第27天】在软件开发和调试过程中,我们有时会遇到需要调试没有调试信息的可执行程序的情况。这可能是由于程序在编译时没有加入调试信息,或者调试信息被剥离了。然而,即使面对这样的挑战,GDB(GNU Debugger)仍然提供了一些方法和技术来帮助我们进行调试。以下将详细介绍如何使用GDB调试不带调试信息的可执行程序。
570 0