提示:
1,是每次有跳出窗口時的1.8秒后都要有此動作,并且是只發(fā)送了一次該動作,發(fā)送完后等待下次的窗口跳出再循環(huán).
2,每次循環(huán)中都只是發(fā)送了一次CTRL + V后就停,而不是一直發(fā)送
看到問題,立即著手編寫測試代碼,這時候問題出現(xiàn):
彈出 inputbox 窗口后,VBS處于暫停狀態(tài),等待用戶輸入,點擊確定or取消,
所以在它后面的 Wshshell.Sendkeys "^v" 將無法執(zhí)行,
如果前面彈出 inputbox 窗口后點擊確定 or 取消的話,那么再執(zhí)行 ctrl+v 就不能把剪切板中的內(nèi)容粘貼到inputbox 窗口當(dāng)中,如果把Wshshell.Sendkeys "^v" 放到 inputbox 之前的話,也不行,因為 inputbox 還沒彈出來,ctrl+v也無法實現(xiàn)粘貼內(nèi)容到 inputbox,
轉(zhuǎn)換一下思路,我們把inputbox 和 sendkey寫成兩個文件,這樣它們互相就不會產(chǎn)生沖突,最終解決代碼如下:
代碼如下:
Set WshShell=WScript.CreateObject("WScript.Shell")
WScript.Sleep 2000
Set fso=wscript.createobject("scripting.filesystemobject")
set f=fso.opentextfile("sendkey.vbs",2,true)
f.Write("Set WshShell=WScript.CreateObject(" & Chr(34) & "WScript.Shell" & chr(34) & ")")
f.WriteBlankLines(1)
f.Write("WScript.Sleep 1800")
f.WriteBlankLines(1)
f.Write("Wshshell.appactivate " & chr(34) & "提示" & chr(34))
f.WriteBlankLines(1)
f.Write("Wshshell.Sendkeys " & chr(34) & "^v" & chr(34))
f.WriteBlankLines(1)
f.Close
Wshshell.Run ("sendkey.vbs")
InputBox "請輸入","提示",""
fso.DeleteFile ("sendkey.vbs")
代碼先寫 sendkey.vbs 并執(zhí)行,執(zhí)行過程中會等待1.8秒發(fā)送 ctrl+v ,接著彈出 inputbox,這時候inputbox彈出來了,sendkey.vbs在等待1.8秒后也執(zhí)行ctrl+v把內(nèi)容粘貼到了inputbox 輸入框中.問題解決
總結(jié):在遇到一些問題的時候,不能鉆牛角尖,換個思路,其實解決起來并不難!