在VBScript中,WScript.Shell.Run
方法有three arguments,其中第三個是布爾值,指定程序是否應等待新生成的進程在繼續之前完成。bWaitOnReturn從HTA運行時對mstsc.exe沒有影響
我無法使此行爲與mstsc.exe
(Windows中的遠程桌面連接程序)正常工作。
如果我將下面的文件保存爲test.vbs
並使用cscript test.vbs
執行它,它按預期工作。
Set obj = CreateObject("WScript.Shell")
Call obj.Run("notepad.exe", 1, true)
MsgBox "You just closed notepad."
Call obj.Run("mstsc.exe", 1, true)
MsgBox "Remote desktop just closed."
但是,如果我嘗試從一個HTA文件執行相同的代碼,它不能正常工作 - 而是運行mstsc.exe
後,消息框出現的立即,而不是等待。
<html>
<head>
<script language="VBScript">
Sub RunProgram
Set obj = CreateObject("WScript.Shell")
Call obj.Run("notepad.exe", 1, true)
MsgBox "You just closed notepad."
Call obj.Run("mstsc.exe", 1, true)
MsgBox "Remote desktop is still open!"
End Sub
</script>
</head>
</body>
<body onload=RunProgram>
</html>
任何想法爲什麼發生這種情況,以及如何解決它?
編輯:我在Windows 10試用了7
不能重現做。第二個消息框僅在兩種情況下關閉RDP連接後出現。 –
@AnsgarWiechers你正在使用什麼操作系統?我應該提到我在Windows 10上遇到過這個問題......(儘管已經在幾臺PC上嘗試過了)。 –
我在Windows 10上得到了同樣的結果。我懷疑這是因爲HTA被設置爲32位運行,但即使將mstsc更改爲32位版本也沒有區別。 – 2016-07-23 00:26:30