SendKeys.Send 方法

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

转载自: https://msdn.microsoft.com/zh-cn/library/system.windows.forms.sendkeys.send.aspx

命名空间:  System.Windows.Forms
程序集:  System.Windows.Forms(在 System.Windows.Forms.dll 中)

 
异常 条件
InvalidOperationException

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

ArgumentException

keys 并不表示有效击键

备注

 

每个键都由一个或多个字符表示。 要指定单个键盘字符,请使用该字符本身。 例如,要表示字母 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}

向上翻页

{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

%

要指定在按一些键时应同时按住 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"。

示例

 

下面的代码示例演示如何使用 Send 方法。若要运行该示例,请将下面的代码粘贴到包含一个名为 Button1 的按钮的窗体 Form1 中。 请确保该 Click 事件已与此示例中的事件处理方法关联。 应将该按钮控件的 TabIndex 属性设置为 0。 当该示例运行时,双击该窗体以触发按钮的 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}");
}

[转]SendKeys.Send 方法的更多相关文章

  1. (转载)SendKeys.Send()的使用

    SendKeys.Send() 使用SendKeys将键击和组合键击发送到活动应用程序.此类无法实例化.若要发送一个键击给某个类并立即继续程序流,请使用Send.若要等待键击启动的任何进程,请使用Se ...

  2. 【转】Ajax中send方法参数的使用(get/post)

    Ajax中send方法参数的使用 一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null. 例如 : ...

  3. Ajax中send方法参数的使用

    一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null. 例如 : var url = " ...

  4. Ajax XMLHttpRequest对象的三个属性以及open和send方法

    (1)onreadystatechange 属性onreadystatechange 属性存有处理服务器响应的函数.下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行 ...

  5. Ajax中send方法的使用

    Ajax中send方法参数的使用 一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null. 例如 : ...

  6. xhr的send方法以及node如何处理get和post数据

    起因:看了阮一峰老师的关于上传文件的文章,进行测试,在使用xhr对象的send方法时遇到问题. 遇到的问题是使用send方法传送过去的数据,在node后台无法接收,经过很多次测试,怀疑是不是send与 ...

  7. Python的生成器send()方法 & yield_from

    生成器对象是一个迭代器.但是它比迭代器对象多了一些方法,它们包括send方法,throw方法和close方法.这些方法,主要是用于外部与生成器对象的交互.本文先介绍send方法. send send方 ...

  8. 执行发送邮件Send方法时,报错:邮箱不可用。 服务器响应为: 5.7.1 Unable to relay for xxx@xxx.com

    .net代码在执行发送邮件Send方法时,往往出现这个的报错: 邮箱不可用. 服务器响应为: 5.7.1 Unable to relay for xxx@xxx.com 这个问题应该是smtp的设置问 ...

  9. C# socket通讯 send方法记录

    由于本人是Java入门的开发,在C#开发中遇到的问题,在此记录一下: 1.client端的send方法不管发送出去没发送出去,总是显示发送出去. 查资料得知,send方法是将数据发送到缓存区,并不是直 ...

随机推荐

  1. Time-python

    1 datetime   datetime是Python处理日期和时间的标准库   1.1 datetime.datetime datetime.datetime.now()              ...

  2. ReportViewer遇到的坑

    在VS2010下 使用ReportViewer的时候,用WEB导出报表,报错“”文件生成:本地报表处理期间出错.“. ” “报表定义具有无法升级的无效目标命名空间“http://schemas.mic ...

  3. Mathematica 迭代函数

    学习Mathematica迭代函数的几个画图例子: 1.三角形沿着某一点旋转 verticse = {{0, 0}, {1, 0}, {1/2, Sqrt[3]/2}}; tri = Line[ver ...

  4. C# 泛型详解---进阶编程(七)

    今天我们来学习在C#的泛型技巧,传统的课本都在讲解什么是泛型,然后列举一大堆代码示例告诉你什么是泛型,今天我们就来聊聊更加本质的东西,我为什么要用泛型?它是来解决什么问题的?底层原理是什么? 简单来说 ...

  5. 简单shell实现局域网IP扫描

    #!/bin/bash network=$1 time=$(date +%H%M%S) for i in $(seq $2 $3) do ping -c 1 -w 2 $network.$i > ...

  6. Gradle 下载不了

    可自行下载对应的 gradle-x.x-all.zip 放在下列目录 C:\Users\penno\.gradle\wrapper\dists\gradle-4.4-all\9br9xq1tocpiv ...

  7. Binary file to C array(bin2c)

    /******************************************************************************** * Binary file to C ...

  8. AFN不支持 "text/html" 的数据的问题:unacceptable content-type: text/html

    使用AFN若遇到这个错误信息 Request failed: unacceptable content-type: text/html bug原因: 这不是AFNetworking的问题 这是做Ser ...

  9. hdu 1723 DP/递推

    题意:有一队人(人数 ≥ 1),开头一个人要将消息传到末尾一个人那里,规定每次最多可以向后传n个人,问共有多少种传达方式. 这道题我刚拿到手没有想过 DP ,我觉得这样传消息其实很像 Fibonacc ...

  10. laravel集合

    1.简介 Illuminate\Support\Collection 类为处理数组数据提供了平滑.方便的封装.例如,查看下面的代码,我们使用辅助函数 collect 创建一个新的集合实例,为每一个元素 ...