【发布时间】:2023-03-21 22:10:02
【问题描述】:
有没有办法给消息框添加超时,如果没有输入,它默认为 no?
我希望它在 1 小时后默认为否
@echo off
Call :YesNoBox "Are you sure you want to do that?"
if "%YesNo%"=="7" (
Call :MessageBox "You answered NO" "Heading"
exit /b
)
exit /b
:YesNoBox
REM returns 6 = Yes, 7 = No. Type=4 = Yes/No
set YesNo=
set MsgType=4
set heading=%~2
set message=%~1
echo wscript.echo msgbox(WScript.Arguments(0),%MsgType%,WScript.Arguments(1)) >"%temp%\input.vbs"
for /f "tokens=* delims=" %%a in ('cscript //nologo "%temp%\input.vbs" "%message%" "%heading%"') do set YesNo=%%a
exit /b
:MessageBox
set heading=%~2
set message=%~1
echo msgbox WScript.Arguments(0),0,WScript.Arguments(1) >"%temp%\input.vbs"
cscript //nologo "%temp%\input.vbs" "%message%" "%heading%"
exit /b
【问题讨论】:
-
您要处理消息框输出的批处理还是 vbsript 文件?在 vbs 中处理的一种方法是here
-
为自己找到答案只需将 //T:36 添加到 "cscript //nologo //T:36 "%temp%\input.vbs" "%message%" "%heading%" " 会在 36 秒后超时
-
@user14875 - 巧妙的解决方法。
-
intButton = wshshell.Popup(strText,[nSecondsToWait],[strTitle],[nType])来自download.microsoft.com/download/winscript56/Install/5.6/…
标签: batch-file cmd vbscript timeout msgbox