В VBScript метод WScript.Shell.Run
имеет three arguments, третий из которых является логическим значением, указывающим, должна ли программа ждать завершения процесса, который был вновь обработан, до продолжения.bWaitOnReturn не влияет на mstsc.exe при запуске с HTA
У меня возникли проблемы с правильной работой этого поведения с помощью 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."
Однако, если я пытаюсь выполнить один и тот же код из файла ОМТ, он не работает должным образом - скорее, окно сообщения после запуска 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>
Любая идея, почему это происходит и как ее исправить?
EDIT: Я проверил это на Windows 10 и 7.
не может воспроизвести. Второе окно сообщения появляется только после закрытия соединения RDP в обоих случаях. –
@AnsgarWiechers Какая операционная система вы используете? Я должен был упомянуть, что я испытываю это в Windows 10 ... (попробовал это на нескольких ПК, хотя). –
Я получаю то же самое в Windows 10. Я подозреваю, что это связано с тем, что HTA устанавливается как 32 бит, но даже изменение mstsc на 32-битную версию не имеет никакого значения. –