用户单击按钮时如何在 VBS 用户定义函数中传递字符串值参数(HTA 应用程序)
How to pass a string value argument in VBS User-defined funtions when the user clicks a button (HTA Application)
所以,我正在尝试制作一个程序,我可以在其中定义一个按钮中的程序,然后 运行 它。在此代码块中(如下所示),我编写了函数,但是当我启动程序时,出现此错误:
Line 19, Char 31: Cannot use parenthesis when calling a sub
我不是要创建子例程,而是要创建用户定义的函数。我该如何解决这个问题?
代码:
<html>
<head>
<title>Program Launcher</title>
<script language="VBScript">
set objShell = CreateObject("Wscript.Shell")
Function something(Prog, waitProcess)
objShell.Run Prog, 0, waitProcess
End Function
</script>
<style>
</style>
</head>
<body>
<p id="Test">
ThisIsATest
</p>
<button onclick="something('notepad.exe')">TestObject</button>
</body>
</html>
运行这段代码的实际错误是:
Wrong number of arguments or invalid property assignment: 'something'
要解决此问题,您只需调整 onclick
事件处理程序以匹配 something(Prog, waitProcess)
函数签名。
下一个问题是事件处理程序是子过程而不是函数,因此无论您是否使用函数,当分配给事件处理程序时,它都会将其视为子过程,这就是下一个问题的原因;
Cannot use parenthesis when calling a sub
要解决此问题,您可以;
去掉括号
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>
所以,我正在尝试制作一个程序,我可以在其中定义一个按钮中的程序,然后 运行 它。在此代码块中(如下所示),我编写了函数,但是当我启动程序时,出现此错误:
Line 19, Char 31: Cannot use parenthesis when calling a sub
我不是要创建子例程,而是要创建用户定义的函数。我该如何解决这个问题?
代码:
<html>
<head>
<title>Program Launcher</title>
<script language="VBScript">
set objShell = CreateObject("Wscript.Shell")
Function something(Prog, waitProcess)
objShell.Run Prog, 0, waitProcess
End Function
</script>
<style>
</style>
</head>
<body>
<p id="Test">
ThisIsATest
</p>
<button onclick="something('notepad.exe')">TestObject</button>
</body>
</html>
运行这段代码的实际错误是:
Wrong number of arguments or invalid property assignment: 'something'
要解决此问题,您只需调整 onclick
事件处理程序以匹配 something(Prog, waitProcess)
函数签名。
下一个问题是事件处理程序是子过程而不是函数,因此无论您是否使用函数,当分配给事件处理程序时,它都会将其视为子过程,这就是下一个问题的原因;
Cannot use parenthesis when calling a sub
要解决此问题,您可以;
去掉括号
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>