{//英文输入
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函数来查找任务栏及开始菜单)
点这里下载