fox23
 
如何编程模拟用户的触摸屏行为?似乎很有趣,这样做的意义在于有时候你可能需要通过不断的点击N次鼠标,或者在设备上进行实际的操作去完成某些测试,但是这完全可以使用 mouse_event API 响应触屏来实现自动化的调试过程。

下面的代码演示了如何使用mouse_event来向系统发送触屏按键的行为。

[DllImport("coredll")]
privatestaticexternvoid mouse_event(MOUSEEVENTF dwFlags, int dx, int dy, int dwData, int dwExtraInfo);

[Flags()]
privateenum MOUSEEVENTF
{

//参照:ms-help://MS.MSDNQTR.v90.en/wceshellui5/html/wce50lrfmouseevent.htm
MOVE
= 0x1, /* mouse move */
LEFTDOWN
= 0x2, /* left button down */
LEFTUP
= 0x4, /*left button up */
RIGHTDOWN
= 0x8, /*right button down */
RIGHTUP
= 0x10, /*right button up */
MIDDLEDOWN
= 0x20, /*middle button down */
MIDDLEUP
= 0x40, /* middle button up */
WHEEL
= 0x800, /*wheel button rolled */
VIRTUALDESK
= 0x4000, /* map to entrire virtual desktop */
ABSOLUTE
= 0x8000, /* absolute move */
TOUCH
= 0x100000, /* absolute move */
}

publicvoid SendTap(int x, int y)
{
//
这里选择的是鼠标左键的点击

mouse_event(MOUSEEVENTF.LEFTDOWN | MOUSEEVENTF.ABSOLUTE,

(int)((65535 / Screen.PrimaryScreen.Bounds.Width)*x),

 (int)((65535 / Screen.PrimaryScreen.Bounds.Height) * y), 0, 0);

mouse_event(MOUSEEVENTF.LEFTUP, 0, 0, 0, 0);
}

需要注意的是,这里参数dydx并不是屏幕的坐标值(尽管他们有着相同的含义),dydx的值都是从0x00000xFFFF65535)之间的值,(0xFFFF,0xFFFF)表示屏幕的右下角。

分类:

技术点:

相关文章:

  • 2022-02-11
  • 2021-05-27
  • 2021-09-14
  • 2022-12-23
  • 2022-12-23
  • 2021-08-21
猜你喜欢
  • 2022-12-23
  • 2021-09-30
  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
  • 2022-02-28
相关资源
相似解决方案