向活动应用程序发送击键。

 

命名空间: System.Windows.Forms
程序集:System.Windows.Forms(在 System.Windows.Forms.dll 中)
复制
public static void Send(
	string keys
)

参数

keys
类型:System.String
要发送的击键字符串。
异常 条件
InvalidOperationException

没有可向其发送击键的活动应用程序。

ArgumentException

keys 并不表示有效击键

要表示字母 A、B 和 C,请将参数指定为“ABC”。

在其他应用程序中,中括号具有特殊含义,此含义可能会在发生动态数据交换 (DDE) 时起重要作用。

C# 神奇的  SendKeys 类
    





            
winform键盘事件(方向键)的响应警告

Send 可能产生不可预知的结果,应避免使用它。

要指定在按键(如 Enter 或 Tab)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码。

 

要指定在按键(如 Enter 或 Tab)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码。

 

代码

Backspace

{BACKSPACE}、{BS} 或 {BKSP}

Break

{BREAK}

Caps Lock

{CAPSLOCK}

Del 或 Delete

{DELETE} 或 {DEL}

向下键

{DOWN}

End

{END}

Enter

{ENTER} 或 ~

Esc

{ESC}

Help

{HELP}

Home

{HOME}

Ins 或 Insert

{INSERT} 或 {INS}

向左键

{LEFT}

Num Lock

{NUMLOCK}

Page Down

{PGDN}

向上翻页

{PGUP}

Print Screen

{PRTSC}(保留供将来使用)

向右键

{RIGHT}

Scroll Lock

{SCROLLLOCK}

TAB

{TAB}

向上键

{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

+

Ctrl

^

Alt

%

要指定按 E 时应按住 Shift,之后按 C 时不按住 Shift,请使用“+EC”。

例如,{LEFT 42} 表示按向左键 42 次;{h 10} 表示按 H 10 次。

C# 神奇的  SendKeys 类
    





            
winform键盘事件(方向键)的响应注意

SetForegroundWindow)来强制聚焦到其他应用程序上。

C# 神奇的  SendKeys 类
    





            
winform键盘事件(方向键)的响应注意

Windows Vista 的增强安全性(称为用户帐户控制或 UAC)可以防止以前的实现按预期工作。

SendWait 方法不会等待处理这些消息。

SendKeys 类使用新实现。

<appSettings>

<add key="SendKeys" value="SendInput"/>

</appSettings>

当该示例运行时,双击该窗体以触发按钮的 Click 事件。

复制
	// Clicking Button1 causes a message box to appear.
	private void Button1_Click(System.Object sender, System.EventArgs e)
	{
		MessageBox.Show("Click here!");
	}


	// Use the SendKeys.Send method to raise the Button1 click event 
	// and display the message box.
	private void Form1_DoubleClick(object sender, System.EventArgs e)
	{

		// Send the enter key; since the tab stop of Button1 is 0, this
		// will trigger the click event.
		SendKeys.Send("{ENTER}");
	}


.NET Framework

受以下版本支持:4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

受以下版本支持:4、3.5 SP1

Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2

 

 

.NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求

 

补充:

winform键盘事件(方向键)的响应

 

C#winForm里键盘事件的响应
1,方向键和回车不能够在KeyDown事件里响应.解决方案是重写ProcessCmdKey
2,其原理并不清晰.base.ProcessCmdKey调用父类的键盘事件.
  KeyDown函数等于在父类里注册了一个事件响应代码.

 

//在KeyDown事件里无法捕获方向键,回车.能捕获空格之类

        //但是是重写了之后,就不能捕获了.

        private void FrmKeyDown_KeyDown(object sender, KeyEventArgs e)

        {

            //MessageBox.Show(e.KeyCode.ToString());//这里捕获不到方向键

            switch (e.KeyCode)

            {

                case Keys.Right:

                    MessageBox.Show("Right123");

                    break;

                case Keys.Left:

                    MessageBox.Show("Left123");

                    break;

                case Keys.Up://方向键不反应

                    MessageBox.Show("up123");

                    break;

                case Keys.Down:

                    MessageBox.Show("Down123");

                    break;

                case Keys.Space:

                    MessageBox.Show("space123");//空格可以响应

                    break;

                case Keys.Enter:

                    MessageBox.Show("enter123");

                    break;

            }

        }

        //方向键事件的处理,只能重写ProcessCmdKey,重写的方法体可以自动生成,不用担心.

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

        {

            switch (keyData)

            {

                case Keys.Right:

                    MessageBox.Show("Right");

                    break;

                case Keys.Left:

                    MessageBox.Show("Left");

                    break;

                case Keys.Up://方向键不反应

                    MessageBox.Show("up");

                    break;

                case Keys.Down:

                    MessageBox.Show("down");

                    break;

                case Keys.Space:

                    MessageBox.Show("space");

                    break;

                case Keys.Enter:

                    MessageBox.Show("enter");

                    break;

            }

            //return false;//如果要调用KeyDown,这里一定要返回false才行,否则只响应重写方法里的按键.

            //这里调用一下父类方向,相当于调用普通的KeyDown事件.//所以按空格会弹出两个对话框

            return base.ProcessCmdKey(ref msg, keyData);

        }

C#winForm里键盘事件的响应
1,方向键和回车不能够在KeyDown事件里响应.解决方案是重写ProcessCmdKey
2,其原理并不清晰.base.ProcessCmdKey调用父类的键盘事件.
  KeyDown函数等于在父类里注册了一个事件响应代码.

 

//在KeyDown事件里无法捕获方向键,回车.能捕获空格之类

        //但是是重写了之后,就不能捕获了.

        private void FrmKeyDown_KeyDown(object sender, KeyEventArgs e)

        {

            //MessageBox.Show(e.KeyCode.ToString());//这里捕获不到方向键

            switch (e.KeyCode)

            {

                case Keys.Right:

                    MessageBox.Show("Right123");

                    break;

                case Keys.Left:

                    MessageBox.Show("Left123");

                    break;

                case Keys.Up://方向键不反应

                    MessageBox.Show("up123");

                    break;

                case Keys.Down:

                    MessageBox.Show("Down123");

                    break;

                case Keys.Space:

                    MessageBox.Show("space123");//空格可以响应

                    break;

                case Keys.Enter:

                    MessageBox.Show("enter123");

                    break;

            }

        }

        //方向键事件的处理,只能重写ProcessCmdKey,重写的方法体可以自动生成,不用担心.

        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)

        {

            switch (keyData)

            {

                case Keys.Right:

                    MessageBox.Show("Right");

                    break;

                case Keys.Left:

                    MessageBox.Show("Left");

                    break;

                case Keys.Up://方向键不反应

                    MessageBox.Show("up");

                    break;

                case Keys.Down:

                    MessageBox.Show("down");

                    break;

                case Keys.Space:

                    MessageBox.Show("space");

                    break;

                case Keys.Enter:

                    MessageBox.Show("enter");

                    break;

            }

            //return false;//如果要调用KeyDown,这里一定要返回false才行,否则只响应重写方法里的按键.

            //这里调用一下父类方向,相当于调用普通的KeyDown事件.//所以按空格会弹出两个对话框

            return base.ProcessCmdKey(ref msg, keyData);

        }

相关文章: