【向重复工作说不】c#之模拟鼠标操作_keenrob的博客-CSDN博客.pdf

一.写在前面

作为一个人力资源工作者,会经常遇到填表、报表的事务,其实有时候就是重复再重复的点击鼠标工作,特别是遇到一些复杂的客户端程序、网页程序,诸如用友客户端、社保管理系统等等,就尤其让人头疼。正好这段时间做了很多这方面的工作,搜索了不少的资料,为了转化学习效果,记录于此,温故知新。


二.引用Windows API

c#模拟鼠标操作,就必须和WindowsAPI打交道,通过引用它内部的几个函数,从而实现在屏幕的指定位置单击、双击,或者对指定的窗体(能够获得句柄的)、控件进行相关控制操作。相关函数如下:

SetCursorPos(设置鼠标位置) mouse_event(控制鼠标动作) FindWindow(获得窗口的句柄) FindWindowEx(获得子窗口或控件的句柄)

SetCursorPos设置鼠标位置

  1. //设置鼠标位置
  2. [DllImport("user32.dll")] //DllImpor针对非托管的。非托管指的是不利用.net 生成的DLL
  3. //声明一个外部实现方法SetCursorPos()
  4. public static extern bool SetCursorPos(int X, int Y);

这里定义声明动态链接库user32.dll作为静态入口点。SetCursorPos是这个动态链接库里面的内部方法,所以这里不要试图改变大小写什么的。这里定义的方法使用 extern 修饰符意味着该方法在 C# 代码外部实现。extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与DllImport 特性一起使用。在这种情况下,还必须将方法声明为static。