使用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);


相关文章
vbs鼠标方法——模拟鼠标按键
'*********************************************************************** ' 代码开始 '*********************************************************************** Set mouse=New SetMouse mouse.
4712 0
|
3月前
|
计算机视觉
基于鼠标事件与键盘控制的针对鼠标运动轨迹的
该文章介绍了一个基于鼠标事件和键盘控制的图像ROI截取工具的实现,包括使用OpenCV库监听鼠标事件、记录鼠标拖拽轨迹、绘制多边形ROI以及应用掩模提取感兴趣区域的代码示例和运行效果展示。
|
6月前
唤醒键盘后无法立即隐藏键盘问题与隐藏键盘的四种方式
唤醒键盘后无法立即隐藏键盘问题与隐藏键盘的四种方式
49 0
键盘绑定按下事件
键盘绑定按下事件
60 0
|
Java
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
479 0
swing中一些常见的鼠标事件(鼠标形状的改变、鼠标接近、按下(图标的切换)、鼠标接近、离开(字体颜色的改变)、鼠标拖拽等)还有系统托盘+对话框
重新认识键盘与鼠标——键盘事件与鼠标事件
重新认识键盘与鼠标——键盘事件与鼠标事件
277 0
重新认识键盘与鼠标——键盘事件与鼠标事件
|
Windows
Windows程序设计——窗口键盘消息滚动事件
Windows程序设计——窗口键盘消息滚动事件
279 0
|
移动开发 数据可视化 前端开发
解决安卓收起键盘无法触发失焦事件的问题
解决安卓收起键盘无法触发失焦事件的问题
1170 0
鼠标滚轮消息的捕捉
鼠标滚轮消息的捕捉
685 0
|
API
用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击)
网上搜到的答案普遍是VBS无法实现,或者是要用第三方COM(ActiveX?)组件。我对第三方组件是很反感的,使用第三方组件毫无可移植性可言,因为别人的系统中不一定注册了这个组件。我的建议是,尽量不要在VBS代码中调用第三方组件,除非你的程序只是写来自己用。
2267 0