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