C#模擬鍵盤鼠標事件

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文檔。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章