使用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.
4484 0
|
8月前
键盘绑定按下事件
键盘绑定按下事件
28 0
如何知道鼠标进入及离开一个视图?
如何知道鼠标进入及离开一个视图?
|
11月前
|
编解码
【PyAutoGUI操作指南】02 鼠标控制功能+获取当前坐标+鼠标事件+鼠标滚动查询
左上角的像素位于坐标0,0。如果屏幕分辨率为1920 x 1080,则右下角的像素将为1919,1079(因为坐标从0开始,而不是1)。
349 0
|
Windows
Windows程序设计——窗口键盘消息滚动事件
Windows程序设计——窗口键盘消息滚动事件
237 0
重新认识键盘与鼠标——键盘事件与鼠标事件
重新认识键盘与鼠标——键盘事件与鼠标事件
250 0
重新认识键盘与鼠标——键盘事件与鼠标事件
|
移动开发 数据可视化 前端开发
解决安卓收起键盘无法触发失焦事件的问题
解决安卓收起键盘无法触发失焦事件的问题
961 0
鼠标滚轮消息的捕捉
鼠标滚轮消息的捕捉
672 0
|
API
用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击)
网上搜到的答案普遍是VBS无法实现,或者是要用第三方COM(ActiveX?)组件。我对第三方组件是很反感的,使用第三方组件毫无可移植性可言,因为别人的系统中不一定注册了这个组件。我的建议是,尽量不要在VBS代码中调用第三方组件,除非你的程序只是写来自己用。
2188 0