在批处理文件中,我可以得到以下内容,给我一个带有“确定”按钮的消息框
mshta.exe vbscript:Execute^("msgbox ""Registers NOT submitted""& VbCrLf & VbCrLf &""Tap or click 'Ok' to exit"",vbexclamation,""Please check your internet connection"":close"^)
我可以添加 yes no 按钮;
mshta.exe vbscript:Execute^("msgbox ""Registers NOT submitted""& VbCrLf & VbCrLf &""Tap or click 'Ok' to exit"",VBYesNo,""Please check your internet connection"":close"^)
我需要做的是根据他们按下的按钮来路由脚本其余部分的路径 - 是/否。这可能不引用外部 .vbs 吗?
非常感谢。
最佳答案
不容易,不。 VBScript 和 JScript 的 HTA 实现都没有提供生成退出代码的 native 方式。您可能会找到与 HTA 实例对应的进程对象,然后使用该对象的 .Terminate
退出非零的方法(如 this answer 中所示);或者可能让 HTA 有条件地写入临时文件或存储注册表值。但是所有这些选择都涉及离开优雅的单线世界,您不妨使用 hybrid script它确实识别退出非零的命令。
如果您追求的是整洁的单行,那么使用 PowerShell 可能会更好:
powershell "add-type -As System.Windows.Forms; exit([windows.forms.messagebox]::show(\"Registers NOT submitted.`n`nDo you want to continue?\",'Warning',4))"
这将退出"is"状态 6,“否”状态 7。所以基本上...
if errorlevel 7 (
rem // user chose "No"
exit /b
) else (
rem // user chose "Yes"
goto begin
)
那个
[windows.forms.messagebox]::show
中“4”的参数方法可以是以下任何值:0 -- OK
1 -- OK Cancel
2 -- Abort Retry Ignore
3 -- Yes No Cancel
4 -- Yes No
5 -- Retry Cancel
这些按钮会产生以下退出代码:
OK = errorlevel 1
Cancel = errorlevel 2
Abort = errorlevel 3
Retry = errorlevel 4
Ignore = errorlevel 5
Yes = errorlevel 6
No = errorlevel 7
关于batch-file - 根据按下的按钮路由脚本的路径 mshta.exe vbscript :Execute,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978957/