惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

MyScale Blog
MyScale Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
罗磊的独立博客
博客园 - 叶小钗
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
美团技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
雷峰网
雷峰网
宝玉的分享
宝玉的分享
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Last Week in AI
Last Week in AI
爱范儿
爱范儿
小众软件
小众软件
K
Kaspersky official blog
P
Proofpoint News Feed
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - Franky
V
Vulnerabilities – Threatpost
博客园_首页
Microsoft Security Blog
Microsoft Security Blog
C
Cybersecurity and Infrastructure Security Agency CISA
V
V2EX
C
Check Point Blog
S
Schneier on Security
P
Palo Alto Networks Blog
IT之家
IT之家
GbyAI
GbyAI
T
Threat Research - Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
Apple Machine Learning Research
Apple Machine Learning Research
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tailwind CSS Blog
Project Zero
Project Zero
Y
Y Combinator Blog
V
Visual Studio Blog
Simon Willison's Weblog
Simon Willison's Weblog
T
Threatpost
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
S
Securelist
C
CERT Recently Published Vulnerability Notes
A
Arctic Wolf
M
MIT News - Artificial intelligence
人人都是产品经理
人人都是产品经理

博客园 - yufun

Windows GUI自动化测试技术的比较和展望 双屏(Daul Monitor)很爽 ChromePlus很好用,已经替代我的Firefox了 很久没来了,更新一下状态 小议云计算和Live Mesh、网络存储 [转载] 我的测试观点与经验 获取当前操作系统的版本 - yufun - 博客园 获取当前执行的函数(Testcase)名称 C#中三种截屏方式总结 搬家完成 你是否知道-你可把代码段拖拽到Toolbox里边 跟UI自动化测试有关的技术 转载:关于开发和测试 转载:再谈UI自动化测试 转载:一个UI自动化的小例子 转载:用一个小例子来说明手工测试,自动化测试,系统命令,编程语言,API的关系 各类搜索网站 在自动化测试中,如果控件不能识别,你会怎么做? 在C#中调用API进行截屏
在C#中如何模拟鼠标键盘操作 - yufun - 博客园
yufun · 2009-01-12 · via 博客园 - yufun

2009-01-12 16:59  yufun  阅读(1446)  评论()    收藏  举报

上一篇讲了在自动化测试中如果控件不能识别,我们最后的办法是模拟鼠标键盘,这一篇就讲如何来做。

首先我先讲在C#中怎么做,至于在C++或者脚本中怎么做,留在后边来讲

对C#来说,键盘的模拟比较简单,在.Net Framework中System.Windows.Forms.SendKeys这个类

鼠标呢,看下边代码:

   1: [DllImport("user32")]
   2: public static extern void mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
   3: 
   4: [Flags]
   5: public enum MouseEventFlags
   6: {
   7:     Move = 0x0001,
   8:     LeftDown = 0x0002,
   9:     LeftUp = 0x0004,
  10:     RightDown = 0x0008,
  11:     RightUp = 0x0010,
  12:     MiddleDown = 0x0020,
  13:     MiddleUp = 0x0040,
  14:     Wheel = 0x0800,
  15:     Absolute = 0x8000
  16: }
  17: 
  18: void PixelsToAbsCoors(double x, double y, ref double xOut, ref double yOut)
  19: {
  20:     //points are based on current screen size setting   
  21:     xOut = x * 65536 / Screen.PrimaryScreen.Bounds.Width + 0.5;
  22:     yOut = y * 65536 / Screen.PrimaryScreen.Bounds.Height + 0.5;
  23: }
  24: public void Move(double x, double y)
  25: {
  26:     PixelsToAbsCoors(x, y, ref x, ref y);
  27:     mouse_event((int)(MouseEventFlags.Move | MouseEventFlags.Absolute), (int)x, (int)y, 0, 0);
  28: }
  29: public void Click(double x, double y)
  30: {
  31:     Move(x, y);
  32:     PixelsToAbsCoors(x, y, ref x, ref y);
  33:     mouse_event((int)(MouseEventFlags.LeftDown | MouseEventFlags.Absolute), (int)x, (int)y, 0, 0);
  34:     mouse_event((int)(MouseEventFlags.LeftUp | MouseEventFlags.Absolute), (int)x, (int)y, 0, 0);
  35: }