Фактическая ошибка, которую вы получаете при запуске этого кода:
Неверное количество аргументов или неправильное присвоение свойства: 'что-то'
Чтобы это исправить, вам просто нужно настроить обработчик событий onclick
для соответствия сигнатуре функции something(Prog, waitProcess)
.
Следующая проблема заключается в том, что обработчики событий являются подпроцедурами, а не функциями, поэтому независимо от того, используете ли вы функцию или нет при назначении обработчику событий он обрабатывает его как подпроцедуру, поэтому следующая проблема:
Невозможно использовать скобки при вызове подпрограммы
Чтобы исправить это, вы можете либо:
Снять скобки
onclick="something 'notepad.exe', True"
Использование Call
onclick="Call something('notepad.exe', True)"
Вот пример, использующий Call
и MsgBox()
для вывода значений, переданных в обработчик событий.
<html>
<head>
<HTA:APPLICATION ID="Test"
BORDER="thick"
BORDERSTYLE="complex"/>
<title>Program Launcher</title>
<style>
</style>
<script language="VBScript">
Sub something(Prog, waitProcess)
MsgBox("Triggered: " & Prog & ", " & waitProcess)
Dim objShell: Set objShell = CreateObject("WScript.Shell")
Call objShell.Run("cmd /c " & Prog, 0, waitProcess)
End Sub
</script>
</head>
<body>
<p id="Test">
ThisIsATest
</p>
<button onclick="Call something('notepad.exe', True)">TestObject</button>
</body>
</html>