语言

SendKeys 类

定义

提供向应用程序发送击键的方法。

public ref class SendKeys
public class SendKeys
type SendKeys = class
Public Class SendKeys
继承
SendKeys

示例

下面的代码示例演示如何使用 Send 该方法。 若要运行该示例,请将以下代码粘贴到名为 Form1 的窗体中,其中包含名为 Button1 的按钮。 确保单击事件与此示例中的事件处理方法相关联。 按钮控件 TabIndex 的属性应设置为 0。 当示例正在运行时,双击窗体以触发按钮的单击事件。

private:
   // Clicking Button1 causes a message box to appear.
   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.
   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}" );
   }

// 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}");
}

' Clicking Button1 causes a message box to appear.
Private Sub Button1_Click(ByVal sender As System.Object, _
    ByVal e As System.EventArgs) Handles Button1.Click
    MessageBox.Show("Click here!")
End Sub


' Use the SendKeys.Send method to raise the Button1 click event 
' and display the message box.
Private Sub Form1_DoubleClick(ByVal sender As Object, _
    ByVal e As System.EventArgs) Handles MyBase.DoubleClick

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

注解

用于 SendKeys 将击键和击键组合发送到活动应用程序。 无法实例化此类。 若要向类发送击键并立即继续执行程序流,请使用 Send。 若要等待键击启动的任何进程,请使用 SendWait。

每个键均由一个或多个字符表示。 若要指定一个键盘字符,请使用该字符本身。 例如,若要表示字母 A,请将字符串“A”传递给该方法。 若要表示多个字符,请将每个额外字符追加它前面的字符。 若要表示字母 A、B 和 C,请将参数指定为“ABC”。

加号(+)、插入符号(^)、百分号(%)、平铺(~)和括号()具有特殊含义 SendKeys。 若要指定其中一个字符,请将它括在大括号 ({}) 。 例如,若要指定加号,请使用“{+}”。 若要指定大括号字符,请使用“{{}”和“{}}”。 括号([ ])没有特殊含义 SendKeys,但你必须将它们括在大括号中。 在其他应用程序中,括号确实具有特殊含义,在发生动态数据交换(DDE)时可能很重要。

Caution

如果应用程序旨在通过各种键盘进行国际使用,则使用 Send 可能会产生不可预知的结果,应避免使用。

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

Key Code
Backspace {BACKSPACE}、{BS}或 {BKSP}
BREAK {BREAK}
Caps Lock {CAPSLOCK}
Del 或 Delete {DELETE} 或 {DEL}
向下箭头 {DOWN}
结束 {END}
Enter {ENTER} 或 ~
ESC {ESC}
帮助 {HELP}
首页 {HOME}
Ins 或 Insert {INSERT} 或 {INS}
左箭头 {LEFT}
Num Lock {NUMLOCK}
向下翻页 {PGDN}
Page Up {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 键的任意组合组合,请在键代码前面加上以下一个或多个代码。

Key Code
Shift +
Ctrl ^
Alt %

若要指定在按其他一些键时应按下 Shift、Ctrl 和 Alt 键的任意组合,请用圆括号将这些键的代码括起来。 例如,若要指定在按下 E 和 C 时按住 SHIFT,请使用“+(EC)”。 若要指定在按下 E 时按住 SHIFT,后跟 C 而不使用 SHIFT,请使用“+EC”。

若要指定重复键,请使用 {key number} 格式。 必须在键和数字之间放置空格。 例如,{LEFT 42} 表示按向左键 42 次;{h 10} 表示按 H 10 次。

注释

由于没有用于激活其他应用程序的托管方法,因此可以在当前应用程序中使用此类或使用本机 Windows 方法(例如 FindWindow ,以及 SetForegroundWindow)强制关注其他应用程序。

注释

该 SendKeys 类已针对 .NET Framework 3.0 进行了更新,以便在 Windows Vista 上运行的应用程序中使用。 Windows Vista(称为用户帐户控制或 UAC)的增强安全性可防止以前的实现按预期工作。

该 SendKeys 类容易受到计时问题的影响,一些开发人员必须解决这些问题。 更新后的实现仍然容易受到计时问题的影响,但速度稍快,可能需要更改解决方法。 该 SendKeys 类首先尝试使用以前的实现,如果失败,则使用新实现。 因此,该 SendKeys 类在不同操作系统上的行为可能不同。 此外,当类使用新实现时 SendKeys , SendWait 该方法不会等待消息在发送到另一个进程时进行处理。

如果应用程序依赖于一致的行为,无论操作系统如何,都可以通过将以下应用程序设置添加到 app.config 文件来强制 SendKeys 该类使用新实现。

<appSettings>

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

</appSettings>

若要强制 SendKeys 类使用以前的实现,请改用该值 "JournalHook" 。

方法

名称 说明
Equals(Object)

确定指定的对象是否等于当前对象。

(继承自 Object)
Flush()

处理消息队列中当前的所有 Windows 消息。

GetHashCode()

用作默认哈希函数。

(继承自 Object)
GetType()

获取当前实例的 Type。

(继承自 Object)
MemberwiseClone()

创建当前 Object的浅表副本。

(继承自 Object)
Send(String)

将击键发送至活动应用程序。

SendWait(String)

将给定密钥发送到活动应用程序,然后等待处理消息。

ToString()

返回一个表示当前对象的字符串。

(继承自 Object)

适用于