將一個或多個鍵擊發(fā)送到活動窗口(仿佛是在鍵盤上擊鍵一樣)。
object.SendKeys(string)
使用 SendKeys 方法可以將鍵擊發(fā)送到無自動化界面的應(yīng)用程序中。多數(shù)鍵盤字符都可用一個鍵擊表示。某些鍵盤字符由多個鍵擊組合而成(例如,CTRL+SHIFT+HOME)。要發(fā)送單個鍵盤字符,請將字符本身作為 string 參數(shù)發(fā)送。例如,要發(fā)送字母 x,則請發(fā)送 string 參數(shù) "x"。
注意 要發(fā)送空格,則請發(fā)送字符串 " "。
可使用 SendKeys 同時發(fā)送多個鍵擊。為此,可將每個鍵擊按順序排列在一起,以此來創(chuàng)建表示一系列鍵擊的復(fù)合字符串參數(shù)。例如,要發(fā)送鍵擊 a、b 和 c,則需要發(fā)送字符串參數(shù) "abc"。SendKeys 方法將某些字符用作字符的修飾符(而不使用其本身的含義)。這組特殊的字符可包括圓括號、中括號、大括號,以及:
用大括號 "{}" 括起這些字符可以發(fā)送它們。例如,要發(fā)送加號,請使用字符串參數(shù) "{+}"。SendKeys中使用的中括號 "[ ]" 無任何特殊含義,但是必須把它們括在大括號中,以便容納確實要賦予其特殊含義的應(yīng)用程序(例如,對于動態(tài)數(shù)據(jù)交換 (DDE) 就是這樣)。
某些鍵擊不生成字符(如 ENTER 和 TAB)。某些鍵擊表示操作(如 BACKSPACE 和 BREAK)。要發(fā)送這些類型的鍵擊,請發(fā)送下表中列出的參數(shù):
鍵 | 參數(shù) |
---|---|
退格鍵 | {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} |
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} |
要發(fā)送由常規(guī)鍵擊和 SHIFT、CTRL 或 ALT 組合而成的鍵盤字符,請創(chuàng)建表示該鍵擊組合的復(fù)合字符串參數(shù)?赏ㄟ^在常規(guī)鍵擊之前添加一個或多個以下特殊字符來完成上述操作:
鍵 | 特殊字符 |
---|---|
SHIFT | + |
CTRL | ^ |
ALT | % |
注意 這樣使用時,不用大括號括起這些特殊字符。
要指定在按下多個其他鍵時,按下 SHIFT、CTRL 和 ALT 的組合,請創(chuàng)建復(fù)合字符串參數(shù),用括號括起其中的組合鍵。例如,要發(fā)送的組合鍵指定:
可使用 SendKeys 方法發(fā)送一種在一行內(nèi)重復(fù)按鍵的鍵擊。為此,要創(chuàng)建復(fù)合字符串參數(shù),以指定要重復(fù)的鍵擊,并在其后指定重復(fù)次數(shù)?墒褂 {鍵擊 數(shù)字} 形式的復(fù)合字符串參數(shù)來完成上述操作。例如,如果要發(fā)送 10 次 "x",則需要發(fā)送字符串參數(shù) "{x 10}"。請確保在鍵擊和數(shù)字之間有一個空格。
注意 只可以發(fā)送重復(fù)按一個鍵的鍵擊。例如,可以發(fā)送 10 次 "x",但不可發(fā)送 10 次 "Ctrl+x"。
注意 不能向應(yīng)用程序發(fā)送 PRINT SCREEN 鍵 {PRTSC}。
下面的示例演示如何將一個 .wsf 文件用于以不同腳本語言(VBScript 和 Jscript)寫成的兩個作業(yè)。每個作業(yè)都運(yùn)行 Windows 計算器并將它發(fā)送給鍵擊以執(zhí)行簡單的計算。
<package> <job id="vbs"> <script language="VBScript"> set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "calc" WScript.Sleep 100 WshShell.AppActivate "Calculator" WScript.Sleep 100 WshShell.SendKeys
"1{+}" WScript.Sleep 500 WshShell.SendKeys
"2" WScript.Sleep 500 WshShell.SendKeys
"~" WScript.Sleep 500 WshShell.SendKeys
"*3" WScript.Sleep 500 WshShell.SendKeys
"~" WScript.Sleep 2500 </script> </job> <job id="js"> <script language="JScript"> var WshShell = WScript.CreateObject("WScript.Shell"); WshShell.Run("calc"); WScript.Sleep(100); WshShell.AppActivate("Calculator"); WScript.Sleep(100); WshShell.SendKeys
("1{+}"); WScript.Sleep(500); WshShell.SendKeys
("2"); WScript.Sleep(500); WshShell.SendKeys
("~"); WScript.Sleep(500); WshShell.SendKeys
("*3"); WScript.Sleep(500); WshShell.SendKeys
("~"); WScript.Sleep(2500); </script> </job> </package>