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