VBScript では、このWScript.Shell.Run
メソッドには3 つの引数があり、その 3 番目の引数は、処理を続行する前にプログラムが新しく生成されたプロセスの終了を待機する必要があるかどうかを指定するブール値です。
この動作を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 でこれをテストしました。