原文

1.模拟键盘事件
System.Windows.Forms.SendKeys
以下是   SendKeys   的一些特殊键代码表。   
  键   代码     
  BACKSPACE   {BACKSPACE}、{BS}   或   {BKSP}     
  BREAK   {BREAK}     
  CAPS   LOCK   {CAPSLOCK}     
  DEL   或   DELETE   {DELETE}   或   {DEL}     
  DOWN   ARROW(下箭头键)   {DOWN}     
  END   {END}     
  ENTER   {ENTER}   或   ~     
  ESC   {ESC}     
  HELP   {HELP}     
  HOME   {HOME}     
  INS   或   INSERT   {INSERT}   或   {INS}     
  LEFT   ARROW(左箭头键)   {LEFT}     
  NUM   LOCK   {NUMLOCK}     
  PAGE   DOWN   {PGDN}     
  PAGE   UP   {PGUP}     
  PRINT   SCREEN   {PRTSC}(保留,以备将来使用)     
  RIGHT   ARROW(右箭头键)   {RIGHT}     
  SCROLL   LOCK   {SCROLLLOCK}     
  TAB   {TAB}     
  UP   ARROW(上箭头键)   {UP}     
  F1   {F1}     
  F2   {F2}     
  F3   {F3}     
  F4   {F4}     
  F5   {F5}     
  F6   {F6}     
  F7   {F7}     
  F8   {F8}     
  F9   {F9}     
  F10   {F10}     
  F11   {F11}     
  F12   {F12}     
  F13   {F13}     
  F14   {F14}     
  F15   {F15}     
  F16   {F16}     
  数字键盘加号   {ADD}     
  数字键盘减号   {SUBTRACT}     
  数字键盘乘号   {MULTIPLY}     
  数字键盘除号   {DIVIDE}     
    
  若要指定与   SHIFT、CTRL   和   ALT   键的任意组合一起使用的键,请在这些键代码之前加上以下一个或多个代码:   
    
  键   代码     
  SHIFT   +     (SHIFT="+") 
  CTRL   ^     (CTRL="^") 如果输入
  ALT   %

private void button1_Click(object sender, System.EventArgs e)

        {//英文输入
this.richTextBox1.Focus();
for(int i=65;i<91;i++)
{
char Letter=(char)i;
SendKeys.Send(Letter.ToString());
System.Threading.Thread.Sleep(100);
SendKeys.Flush();
}
for(int i=97;i<123;i++)
{
char Letter=(char)i;
SendKeys.Send(Letter.ToString());
System.Threading.Thread.Sleep(100);
SendKeys.Flush();
}
} private void button3_Click(object sender, System.EventArgs e)
{//数字输入
this.richTextBox1.Focus();
for(int i=0;i<10;i++)
{
SendKeys.Send(i.ToString());
System.Threading.Thread.Sleep(100);
SendKeys.Flush();
}
} private void button4_Click(object sender, System.EventArgs e)
{//Backspace
this.richTextBox1.Focus();
SendKeys.Send("{Backspace}");
} private void button5_Click(object sender, System.EventArgs e)
{//Home
this.richTextBox1.Focus();
SendKeys.Send("{Home}");
} private void button6_Click(object sender, System.EventArgs e)
{//End
this.richTextBox1.Focus();
SendKeys.Send("{End}");
} private void button7_Click(object sender, System.EventArgs e)
{//Enter
this.richTextBox1.Focus();
SendKeys.Send("{Enter}");
} private void button8_Click(object sender, System.EventArgs e)
{//Delete
this.richTextBox1.Focus();
SendKeys.Send("{Delete}");
} private void button2_Click(object sender, System.EventArgs e)
{//Shift+Home
this.richTextBox1.Focus();
SendKeys.Send("+{Home}");
} private void button9_Click(object sender, System.EventArgs e)
{//Shift+End
this.richTextBox1.Focus();
SendKeys.Send("+{End}");
}

  

 看下方法的说明
public class SendKeys : System.Object
    System.Windows.Forms 的成员
 
摘要:
 提供将键击发送到应用程序的方法。  
public static void Send ( System.String keys )
    System.Windows.Forms.SendKeys 的成员
 
摘要:
 向活动应用程序发送击键。  
public static void Sleep ( System.TimeSpan timeout )
    System.Threading.Thread 的成员
 
摘要:

将当前线程阻塞指定的时间。

public static void Flush (  )
    System.Windows.Forms.SendKeys 的成员
 
2.模拟鼠标
有时,我们需在我们的程序中模拟鼠标的移动、点击等动作。——比如,一个再现用户操作的宏,或者一个演示操作方法的Demo程序。那么,我们在.Net中如何实现呢?

.Net并没有提供改变鼠标指针位置、模拟点击操作的函数;但是Windows API提供了。其中一个是:

        [DllImport("user32.dll")]
        static extern bool SetCursorPos(int X, int Y);  

该函数可以改变鼠标指针的位置。其中X,Y是相对于屏幕左上角的绝对位置。
另一个函数是:

        [DllImport("user32.dll")]
        static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);

这个函数不仅可以设置鼠标指针绝对的位置,而且可以以相对坐标来设置。另外,该函数还可以模拟鼠标左右键点击、鼠标滚轮操作等。其中的MouseEventFlag是一个基于uint类型的枚举,定义如下:

        [Flags]
        enum MouseEventFlag : uint
        {
            Move        = 0x0001,
            LeftDown    = 0x0002,
            LeftUp      = 0x0004,
            RightDown   = 0x0008,
            RightUp     = 0x0010,
            MiddleDown  = 0x0020,
            MiddleUp    = 0x0040,
            XDown       = 0x0080,
            XUp         = 0x0100,
            Wheel       = 0x0800,
            VirtualDesk = 0x4000,
            Absolute    = 0x8000
        }

关于这两个函数的详细说明,可以查看MSDN Library或者Windows的Platform SDK文档。
下面的演示程序(完整版源代码,VS.Net 2005/C#)演示了使用上面的函数,控制鼠标移动到任务栏并点击“开始”按钮的方法。
(该程序使用了FindWindowEx等API函数来查找任务栏及开始菜单)

(转)C#模拟键盘鼠标事件的更多相关文章

  1. Android查询:模拟键盘鼠标事件(adb shell 实现)

    1. 发送键盘事件: 命令格式1:adb shell input keyevent “value” 其中value以及对应的key code如下表所列: KeyEvent Value KEYCODE ...

  2. C#模拟键盘鼠标事件 SendKeys 的特殊键代码表(转)

    使用 SendKeys 将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用 Send.若要等待键击启动的任何进程,请使用 SendWait. 每个键都 ...

  3. 【pyHook】 监测键盘鼠标事件等

    [pyHook] pyHook是一个用来进行键盘.鼠标等层面事件监控的库.这个库的正常工作需要pythoncom等操作系统的API的支持.首先来说说如何安装. 直接pip install pyHook ...

  4. soeasy的键盘鼠标事件

    在web自动化中,我们可能会遇到需要通过键盘或者鼠标去操作某些元素,那么我们就需要用到键盘事件和鼠标事件了,今天对键盘和鼠标操作进行一个总结 鼠标事件 鼠标事件需要引入ActionChains类,查看 ...

  5. 在WebBrowser中通过模拟键盘鼠标操控网页中的文件上传控件(转)

    引言 这两天沉迷了Google SketchUp,刚刚玩够,一时兴起,研究了一下WebBrowser. 我在<WebBrowser控件使用技巧分享>一文中曾谈到过“我现在可以通过WebBr ...

  6. linux 处理键盘 鼠标事件

    Linux下鼠标和键盘的模拟控制,也就是为手势和语音控制鼠标和键盘部分服务的. 有关于本系统构建的文章结构都会由三个部分来组织,一是该功能模块的介绍和在Linux下简单应用程序的实现:二是将该功能模块 ...

  7. C# winform 模拟键盘鼠标操作

    1.获取鼠标位置 private void timer1_Tick(object sender, EventArgs e) { // timer1.Stop(); // int x = Control ...

  8. 【JS】键盘鼠标事件

    一,键盘 keydown 表示按下键盘 keypress 表示按下键盘 keyup 表示键盘弹起 这三者的区别分别表现在发生的 先后顺序,获取到的键盘按钮值,已经对输入框的文本取值这三方面 先后顺序: ...

  9. C++模拟键盘鼠标消息

    #include <Windows.h> /* * === FUNCTION ======================================================= ...

随机推荐

  1. jquery easyui将form表单元素的值序列化成对象

    function serializeObject(form){ var o={}; $.each(form.serializeArray(),function(index){ if(o[this['n ...

  2. UVaLive 7374 Racing Gems (DP,LIS)

    题意:以辆赛车可以从x轴上任意点出发,他的水平速度允许他向每向上移动v个单位,就能向左或向右移动v/r个单位(也就是它的辐射范围是个等腰三角形) 现在赛车从x轴出发,问它在到达终点前能吃到的最多钻石. ...

  3. CodeForces 548A Mike and Fax (回文,水题)

    题意:给定一个字符串,问是不是恰好存在 k 个字符串是回文串,并且一样长. 析:没什么好说的,每次截取n/k个,判断是不是回文就好. 代码如下: #include<bits/stdc++.h&g ...

  4. ios开源项目(各种有用的第三方库)

    状态栏:MTStatusBarOverlay  下拉刷新:EGOTableViewPullRefresh  网络应用:ASIHTTPRequest  等待特效:MBProgressHUD  JSON解 ...

  5. SQL Prompt 5.3.4.1

    Red Gate系列之三 SQL Server 开发利器 SQL Prompt 5.3.4.1 Edition T-SQL智能感知分析器 完全破解+使用教程   Red Gate系列之三 SQL Se ...

  6. Ehcache(03)——Ehcache中储存缓存的方式

    http://haohaoxuexi.iteye.com/blog/2114769 Ehcache中储存缓存的方式 目录 1     堆内存(MemoryStore) 1.1     指定可用内存 1 ...

  7. Arduino 4X3键盘 AD模拟分量实现

    //读分量测试 ---------------- ; //模拟口0 ; // 取得键AD模拟分量 void setup() { //通信波特率 Serial.begin(); } void loop( ...

  8. 【M8】了解各种不同意义的new和delete

    1.首先考虑new operator,new operator 可以认为做了三件事情:a.调用operator new分配一块内存:b.在这块内存上调用构造方法构造对象:返回指针. 2.operato ...

  9. Swift学习笔记四

    前面三篇笔记通过一些示例展示了Swift的一些特性,粗略地介绍了它的语法和特色,从这一篇笔记开始,将正式系统地介绍Swift的语法和特性了. Swift是一门为iOS和OSX开发准备的全新语言,但是它 ...

  10. Codeforces gym 100685 A. Ariel 暴力

    A. ArielTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100685/problem/A Desc ...