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}

若要指定与   SHIFTCTRLALT键的任意组合一起使用的键,请在这些键代码之前加上以下一个或多个代码:

  代码     

  SHIFT   +     SHIFT="+") 

  CTRL   ^     (CTRL="^") 如果输入

  ALT   %   


  1. private void btnDigital_Click(object sender, EventArgs e) 
  2.     //数字 
  3.     this.textBox1.Focus(); 
  4.     for (int i = 0; i < 13; i++) 
  5.     { 
  6.         SendKeys.Send(i.ToString()); 
  7.         System.Threading.Thread.Sleep(200); 
  8.         SendKeys.Flush(); 
  9.     } 
  10.  
  11. private void btnEnglish_Click(object sender, EventArgs e) 
  12.     //字母 
  13.     this.textBox1.Focus(); 
  14.     for (int i = 97; i < 123; i++) 
  15.     { 
  16.         char Letter = (char)i; 
  17.         SendKeys.Send(Letter.ToString()); 
  18.         System.Threading.Thread.Sleep(100); 
  19.         SendKeys.Flush(); 
  20.     } 
  21.     SendKeys.Send("{ENTER 2}"); 
  22.     for (int i = 65; i < 91; i++) 
  23.     { 
  24.         char Letter = (char)i; 
  25.         SendKeys.Send(Letter.ToString()); 
  26.         System.Threading.Thread.Sleep(100); 
  27.         SendKeys.Flush(); 
  28.     } 
  29.  
  30. private void btnEnter_Click(object sender, EventArgs e) 
  31.     //ENTER 
  32.     this.textBox1.Focus(); 
  33.     SendKeys.Send("{ENTER}"); 
  34.  
  35. private void btnBackspace_Click(object sender, EventArgs e) 
  36.     //BACKSPACE 
  37.     this.textBox1.Focus(); 
  38.     SendKeys.Send("{BACKSPACE}"); 
  39.  
  40. private void btnHome_Click(object sender, EventArgs e) 
  41.     //HOME 
  42.     this.textBox1.Focus(); 
  43.     SendKeys.Send("{HOME}"); 
  44.  
  45. private void btnEnd_Click(object sender, EventArgs e) 
  46.     //END 
  47.     this.textBox1.Focus(); 
  48.     SendKeys.Send("{END}"); 
  49.  
  50. private void btnShiftHome_Click(object sender, EventArgs e) 
  51.     //SHIFT + HOME 
  52.     this.textBox1.Focus(); 
  53.     SendKeys.Send("+{HOME}"); 
  54.  
  55. private void btnShiftEnd_Click(object sender, EventArgs e) 
  56.     //SHIFT + END 
  57.     this.textBox1.Focus(); 
  58.     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);  

 

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

        [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或者WindowsPlatform SDK文档。

 

附件中有两个文档一个是用SendKey模拟键盘,一个是模拟鼠标操作。