Previous topicNext topic
Help > 开发指南 > SanMuGrid平台编程 > 静态类 > 其他 >
SendKeys

使用SendKeys将键击和组合键击发送到活动应用程序。此类无法实例化。

若要发送一个键击给某个类并立即继续程序流,请使用Send。

若要等待键击启动的任何进程,请使用SendWait。

 

1.每个键都由一个或多个字符表示。若要指定单个键盘字符,请使用该字符本身。

例如,若要表示字母 A,请将字符串“A”传递给方法。

若要表示多个字符,请将各个附加字符追加到它之前的字符的后面。

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

 

2.加号(+)、插入符号(^)、百分号(%)、波浪号(~)以及圆括号() 对 SendKeys 具有特殊含义。若要指定这些字符中的某个字符,请将其放在大括号 ({})   内。

例如,若要指定加号,请使用“{+}”。

若要指定大括号字符,请使用“{{}”和“{}}”。

中括号([    ])对 SendKeys 没有特殊含义,但必须将它们放在大括号内。在其他应用程序中,中括号具有特殊含义,此含义可能会在发生动态数据交换(DDE)时起重要作用。

 

3.若要指定在按键(如ENTER或TAB)时不显示的字符,以及表示操作而不表示字符的键,请使用下表中的代码:

键    代码    
BACKSPACE    {BACKSPACE}、{BS}    或    {BKSP}    
BREAK    {BREAK}    
CAPS    LOCK    {CAPSLOCK}    
DEL    或    DELETE    {DELETE}    或    {DEL}    
DOWN    ARROW(下箭头键)    {DOWN}    
END    {END}    
ENTER    {ENTER}    或    ~    
ESC    {ESC}    
HELP    {HELP}    
HOME    {HOME}    
INS    或    INSERT    {INSERT}    或    {INS}    
LEFT    ARROW(左箭头键)    {LEFT}    
NUM    LOCK    {NUMLOCK}    
PAGE    DOWN    {PGDN}    
PAGE    UP    {PGUP}    
PRINT    SCREEN    {PRTSC}(保留供将来使用)    
RIGHT    ARROW(右箭头键)    {RIGHT}    
SCROLL    LOCK    {SCROLLLOCK}    
TAB    {TAB}    
UP    ARROW(上箭头键)    {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}

 

4.若要指定与SHIFT、CTRL和ALT键的任意组合一起使用的键,请在这些键代码之前加上以下一段或多段代码。      
键    代码
SHIFT    +    
CTRL    ^    
ALT    %
 
若要指定在按一些键时应同时按住SHIFT、CTRL和ALT键的任意组合,请将这些键的代码放在括号内。例如,若要指定按E和C时同时按住SHIFT 键,请使用“+(EC)”。若要指定按E时应按住SHIFT,之后按C时不按住   SHIFT,请使用“+EC”。  

4.要指定重复的键,请使用 {键数字} 的形式。键和数字之间必须放一空格。

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

后添:

1、SendKeys.Send("4");

SendKeys.Send(Keys.NumPad4); //只发送的键盘上面的数字键4,而不是小键盘的4

2、sendkeys.send()输入中文

先把内容复制到(系统的)剪贴板,再从剪贴板复制出来。

    根据这一原理,编码的思路就清晰了:

对剪贴板进行操作,把字符串复制到剪贴板(比发送“CTRL+C”方便)
焦点定位到输入框
发送“CTRL+V”

Vb.Net
'^c+^v实现中文的输入     
Dim s As String="hello, 我是中文字符串"
Clipboard.SetText(s)    '将字符串复制到剪贴板,相当于^c
textBox1.Focus()    '定位焦点
SendKeys.SendWait("^v")   'CTRL+V,粘贴

C#
//^c+^v实现中文的输入     
string s="hello, 我是中文字符串";
Clipboard.SetText(s);    // 将字符串复制到剪贴板,相当于^c
textBox1.Focus();    // 定位焦点
SendKeys.SendWait("^v");   // CTRL+V,粘贴

下面我们可以利用发送快捷键的方式来实现批量给QQ好友发送剪贴板中的信息。

Vb.Net
Dim tbl As SmGrid=Proj.CurrentSmGrid
For Each dr As RowData In tbl.View.ViewRows
    '先获取QQ号码
    Dim strQQ As String=dr("QQ")
    '激活好友聊天窗体
    System.Diagnostics.Process.Start("tencent://message/?uin=" + strQQ)
    '延迟一下,等待QQ好友聊天窗体切换到当前窗口
    Thread.Sleep(1000)
    '发送F1快捷键,激活聊天窗口中的输入控件
    SendKeys.SendWait("{F1}")
    '发送Ctrl+V快捷键,将剪贴板中的内容粘贴到聊天窗口
    SendKeys.SendWait("^v")
    '发送Ctrl+Enter快捷键,发送当前聊天信息
    SendKeys.SendWait("^{ENTER}")
Next

C#
SmGrid tbl = Proj.CurrentSmGrid;
foreach (RowData dr in tbl.View.ViewRows)
{
    // 先获取QQ号码
    string strQQ = dr["QQ"].ToString();
    // 激活好友聊天窗体
    System.Diagnostics.Process.Start("tencent://message/?uin=" + strQQ);
    // 延迟一下,等待QQ好友聊天窗体切换到当前窗口
    Thread.Sleep(1000);
    // 发送F1快捷键,激活聊天窗口中的输入控件
    SendKeys.SendWait("{F1}");
    // 发送Ctrl+V快捷键,将剪贴板中的内容粘贴到聊天窗口
    SendKeys.SendWait("^v");
    // 发送Ctrl+Enter快捷键,发送当前聊天信息
    SendKeys.SendWait("^{ENTER}");
}