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.模擬鼠標
.Net並沒有提供改變鼠標指針位置、模擬點擊操作的函數;但是Windows API提供了。其中一個是:
static extern bool SetCursorPos(int X, int Y);
該函數可以改變鼠標指針的位置。其中X,Y是相對於屏幕左上角的絕對位置。
另一個函數是:
static extern void mouse_event(MouseEventFlag flags, int dx, int dy, uint data, UIntPtr extraInfo);
這個函數不僅可以設置鼠標指針絕對的位置,而且可以以相對座標來設置。另外,該函數還可以模擬鼠標左右鍵點擊、鼠標滾輪操作等。其中的MouseEventFlag是一個基於uint類型的枚舉,定義如下:
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文檔。