标题: [其他] 使用mshta弹窗如何获取弹窗的返回值为确定还是取消? [打印本页]
作者: mpili 时间: 2020-6-19 15:10 标题: 使用mshta弹窗如何获取弹窗的返回值为确定还是取消?
- mshta vbscript:msgbox("提示内容1",1,"提示窗口1")(window.close)
复制代码
如题,如何获取弹窗的返回值是确定还是取消,以进行下一步操作??直接使用set貌似接收不到- @echo off
- for /f %%i in ('mshta vbscript:msgbox("提示内容1",1,"提示窗口1")(window.close)') do (
- set "bbb=%%i"
- )
- echo %bbb%
- pause
复制代码
使用for直接给我关闭了。。也取不到返回值?
作者: mpili 时间: 2020-6-19 15:28
解决了,还是通过for解决的,不过是参考了别人的代码- @echo off
- Setlocal enabledelayedexpansion
- ::CODER BY 老刘 POWERD BY iBAT
- Set Vbscript=Msgbox("Hello,world!",1)
- for /f "Delims=" %%a in (
- 'mshta VBScript:Execute("CreateObject(""Scripting.Filesystemobject"").GetStandardStream(1).Write(%Vbscript:"=""%)"^)(Close^)'
- ) do Set "MsHtaReturnValue=%%a"
- echo %MsHtaReturnValue%
- Set ReturnValue1=确定
- Set ReturnValue2=取消或关闭窗口
- Echo 你点击了!ReturnValue%MsHtaReturnValue%!。
- pause
复制代码
转载自http://www.mamicode.com/info-detail-2175913.html
不过其中的一些代码不太了解。。比如.Write(%Vbscript:"=""%)。。这个貌似是。。。没看懂,只能大概明白,我去看看置顶的那个参考下
作者: 不知道是谁 时间: 2020-6-19 18:39
- @echo off
- setlocal enabledelayedexpansion
- set ms=mshta vbscript:CreateObject("Scripting.FileSystemObject").GetStandardStream(1).Write(msgbox("是否立即关闭?",4132,"提示"))(window.close)
- for /f %%i in ('!ms!') do if %%i EQU 6 exit
- pause
复制代码
参考资料:
作者: chishingchan 时间: 2024-11-12 12:17
怎么第 4 行不支持中文字符?!
作者: 77七 时间: 2024-11-12 13:55
本帖最后由 77七 于 2024-11-12 13:58 编辑
回复 4# chishingchan
把批处理保存为ansi编码
我自己常用cax
- cax /msy "提示"
- if errorlevel 7 (
- echo 否
- ) else if errorlevel 6 (
- echo 是
- )
复制代码
作者: aloha20200628 时间: 2024-11-12 15:38
本帖最后由 aloha20200628 于 2024-11-12 15:53 编辑
回复 4# chishingchan
一。若以下代码用简中编码保存,并在936码页(即简中编码,可在运行前用 chcp 936>nul 命令强制)环境中运行,即可正常显示弹窗中文
二。若以下代码用utf-8编码(无头标)保存,并在65001码页(即utf-8编码,可在运行前用 chcp 65001>nul 命令强制)环境中运行,即可正常显示弹窗中文
- @echo off &setlocal &for /f %%v in (
- 'mshta vbscript:execute("createobject(""scripting.filesystemobject"").getstandardstream(1).write(msgbox(""中文提示"",1)):close"^)'
- ) do set "v=%%v"&echo,弹窗返回值=%%v
- endlocal&pause&exit/b
复制代码
作者: chishingchan 时间: 2024-11-12 21:09
本帖最后由 chishingchan 于 2024-11-12 21:34 编辑
我整理了一下:- rem 隐藏运行
- if not "%1"=="hide" mshta VBScript:CreateObject("WScript.Shell").Run("""%~f0"" hide",0)(Close)&exit
-
- rem 显示对话框
- for /f "delims=" %%i in (
- 'mshta VBScript:Execute("CreateObject(""Scripting.FilesystemObject"").GetStandardStream(1).Write(MsgBox(""此程序即将删除系统盘的用户数据!是否继续?"",4132,""警告"")):Close"^)'
- ) do set ReturnValue=%%i
-
- if "%ReturnValue%"=="6" set Button=是
- if "%ReturnValue%"=="7" set Button=否
- mshta VBScript:MsgBox("%Button%",0,"返回值")(Close)
-
- rem 播放语音
- if "%ReturnValue%"=="7" mshta VBScript:CreateObject("sapi.spvoice").speak("Goodbye")(Close)&exit
复制代码
作者: chishingchan 时间: 2024-11-12 21:32
回复 chishingchan
一。若以下代码用简中编码保存,并在936码页(即简中编码,可在运行前用 chcp 936> ...
aloha20200628 发表于 2024-11-12 15:38
可惜!msgbox 没有倒计时功能!
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |