黄季冬=>fox23

Freesc Huang & Smart Devices
数据加载中……
[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 Freesc Huang 阅读(369) 评论(6)  编辑 收藏 网摘 所属分类: Compact Framework

评论

#1楼 2008-07-08 14:54 roc196[未注册用户]

加个timer可以冒充hopper了~~
呵呵~~~
    回复  引用    

#2楼[楼主] 2008-07-08 20:19 fox23      

@roc196
极少用hopper///
    回复  引用  查看    

#3楼 2009-04-05 09:02 TTCOOL      

请问,怎么能实现滑动手势啊???

像UCWeb那样的浏览体验……

谢谢啦~~~~
    回复  引用  查看    

#4楼[楼主] 2009-04-05 10:51 Freesc Huang      

@TTCOOL
用一个点的序列记录用户的笔迹, 设个阈值判断一下坐标变化.不过效率没有iphone那么高, 两者触摸屏不同.
    回复  引用  查看    

#5楼 2009-04-05 17:59 TTCOOL      

多谢 :-)
    回复  引用  查看    



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 1063890




相关文章:

相关链接: