.Net下的鼠标键盘模拟技术实战
简介
本文讲述如何利用.Net框架来实现对系统的鼠标键盘模拟。鼠标键盘的模拟技术在游戏的外挂中使用比较多,但更多的时候它用于在软件UI自动化测试。本文不探讨该技术的应用领域主要探讨在.Net框架下面实现鼠标键盘模拟的技术选择。很多人在想到鼠标键盘模拟技术的时候第一反映是驱动开发,其实实现一个驱动来完成鼠标键盘的模拟只是其中的一种方式。我将鼠标键盘的模拟场景分为三种情况: 基于同一进程中的鼠标键盘模拟 、基于不同进程中的鼠标键盘模拟 、基于驱动方式的鼠标键盘模拟
1.基于同一进程中的鼠标键盘模拟
我们先了解一下一种最简单的方式:基于同一进程中的鼠标键盘模拟。这种方式比较简单的原因是所有的控件都在自己的程序控制范围中,只要通过调用控件对应的事件函数就可以实现。
例:
private void buttonParent_Click(object sender, System.EventArgs e)在这节我们主要探讨在不同进程中的鼠标键盘模拟技术,我将这块分成两个部分:
{
// 调用buttonObject的Click事件
buttonObject.PerformClick();
};
第一,针对一般引用程序的鼠标键盘模拟主要用到了几个系统的API:
鼠标事件API
[System.Runtime.InteropServices.DllImport("user32")]
private static extern int mouse_event(int dwFlags, int dx, int dy, int dwData, int dwExtraInfo);
dwFlags : 指示鼠标的行为和点击标志
dx, dy : 指示鼠标的绝对坐标位置偏移
dwData : 主要用在滚轮中,给出滚轮的滚动偏移
dwExtraInfo : 指示要传递给鼠标的额外数据
键盘事件API
[System.Runtime.InteropServices.DllImport("user32")]
private static extern void keybd_event(int bVk, int bScan, int dwFlags, int dwExtraInfo);
bVk : 指示按键的虚拟键值
bScan : 指示按键的扫描码,不过这个字段已经不用了
dwFlags : 指示按键的操作标志 KEYEVENTF_EXTENDEDKEY , KEYEVENTF_KEYUP
dwExtraInfo : 指示要传递给按键的额外数据
注:
推荐一个关于.Net环境中调用系统API的查询网站www.pinvoke.net
0
相关文章