SendKeys 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供将键击发送到应用程序的方法。
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) 发生时,这些含义可能很重要。
注意
如果你的应用程序旨在用于全球各种键盘,使用 Send 可能会产生不可预知的结果,应当避免。
若要指定在按下键(如 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} |
| Page Up | {PGUP} |
| 打印屏幕 | {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 | % |
若要指定应按住 SHIFT、Ctrl 和 ALT 的任何组合,同时按下其他几个键,请将这些键的代码括在括号中。 例如,若要指定在按下 E 和 C 时按住 SHIFT,请使用“+ (EC) ”。 若要指定在按下 E 时按住 SHIFT,后跟不带 SHIFT 的 C,请使用“+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) |