技术开发 频道

.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
相关文章