[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);
}

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

posted on 2008-02-03 21:19  J.D Huang  阅读(1242)  评论(5编辑  收藏  举报