[CF Skills]如何编程模拟用户的触屏操作
如何编程模拟用户的触摸屏行为?似乎很有趣,这样做的意义在于有时候你可能需要通过不断的点击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);
}
需要注意的是,这里参数dy和dx并不是屏幕的坐标值(尽管他们有着相同的含义),dy和dx的值都是从0x0000到0xFFFF(65535)之间的值,(0xFFFF,0xFFFF)表示屏幕的右下角。
posted on 2008-02-03 21:19 J.D Huang 阅读(1244) 评论(5) 编辑 收藏 举报