标题: [问题求助] 求助VBS的msgbox函数,yesno两个按钮,按下按钮后无法执行单独的代码 [打印本页]
作者: LTSC1809 时间: 2023-5-5 21:49 标题: 求助VBS的msgbox函数,yesno两个按钮,按下按钮后无法执行单独的代码
本帖最后由 LTSC1809 于 2023-5-5 22:24 编辑
后面的if语句检测返回值是否为vbno,如果是,就结束vbs解释器的进程,但是测试中发现不管点是还是否结果都会运行后面的循环,觉得很疑惑,为了查错在if前加了个msgbox用来显示现在yesno这个变量获取到的返回值,也就是msgbox(yesno),结果竟然发现我点是则显示6,点否则显示7,为什么是数字啊,不应该是vbyes和vbno吗,这样导致这个if语句完全失效了啊,不管点什么都会进入到接下来的循环,有没有办法能让他如果点否就执行if里面那段代码啊,代码如下- dim t,t1,t2,user_input,tout,yesno,jishu,wshShell
- user_input=clng(inputbox("设定运行次数:"))
- yesno=msgbox("如果输入数字非常大,则运行时间可能很长,确实要运行吗?",vbyesno,"警告")
- if yesno=vbno then
- Set wshShell = WScript.CreateObject("WScript.Shell")
- wshShell.run "TASKKILL /im 1.exe",0
- end if
- jishu=0
- t=timer()
- do until jishu=user_input
- jishu=jishu+1
- loop
- t1=timer()
- t2=t1-t
- if t2>3 then
- tout="输入的数字可能较大"
- else
- tout="输入的数字可能较小"
- end if
- msgbox tout&";消耗时间:"&t2&"秒",vbokonly,"运行结果"
复制代码
作者: Batcher 时间: 2023-5-5 22:15
回复 1# LTSC1809
多查文档,不要按照自己认为的瞎猜。
http://bbs.bathome.net/include/js/script56/html/vsfctmsgbox.htm
作者: LTSC1809 时间: 2023-5-5 22:22
回复 2# Batcher 返回是6和7这点我也考虑过,if那里我试过把vbno改成7,主要问题是现在不管点是还是点否都无法退出,我希望能点否后执行if中的代码,来结束运行,标题可能有点误导,我去改一下,主要意思不是问为什么返回值是6和7,把if中的vbno改成7我也试过了,没有
作者: LTSC1809 时间: 2023-5-5 22:23
回复 2# Batcher 抱歉,这些文章我很多看不懂的,也打开过,但是感觉和天书一样,于是后来就没再看过,今后有时间我去看看
作者: czjt1234 时间: 2023-5-6 05:39
vbYes = 6
vbNo = 7
你的代码没写点了 vbNo 后要退出程序
所以不管你点哪个都一样
那个 1.exe是什么?
如果点了 vbNo 要退出程序,就把 1.exe 改成 WScript.exe
或者在第六行插入一行 WScript.Quit()
作者: LTSC1809 时间: 2023-5-6 11:59
回复 5# czjt1234
这里确实错了,但是刚刚试了,改成wscipt.exe后还是点否也会继续运行下面的循环
作者: czjt1234 时间: 2023-5-6 12:55
WScript.exe
你拼写错误了
WScript.exe 是 vbs 的进程名
作者: LTSC1809 时间: 2023-5-6 18:28
本帖最后由 LTSC1809 于 2023-5-6 18:30 编辑
回复 5# czjt1234 我文件中没有拼写错误,现在点no以后如果输入的数字很小那么会弹一个窗口然后瞬间关闭,快到看不到内容,后面的循环就不会执行了,但是如果输入数字大,运行时间长一点的话,那么最后的统计时间窗口还会弹出,循环也会运行,不知道为什么
作者: LTSC1809 时间: 2023-5-6 18:30
我文件中没有拼写错误,现在点no以后如果输入的数字很小那么会弹一个窗口然后瞬间关闭,快到看不到内容,后面的循环就不会执行了,但是如果输入数字大,运行时间长一点的话,那么最后的统计时间窗口还会弹出,循环也会运行,不知道为什么
作者: czjt1234 时间: 2023-5-6 18:46
- user_input = 0 + inputbox("设定运行次数:")
- yesno = msgbox("如果输入数字非常大,则运行时间可能很长,确实要运行吗?", vbyesno, "警告")
- if yesno = vbno then WScript.Quit()
-
- jishu = 0
- t = timer()
- do until jishu = user_input
- jishu = jishu + 1
- loop
- t1 = timer()
- t2 = t1 - t
- if t2 > 3 then
- tout = "输入的数字可能较大" & vbCrLf
- else
- tout = "输入的数字可能较小" & vbCrLf
- end if
- msgbox tout & "消耗时间:" & t2 & "秒", vbokonly, "运行结果"
复制代码
win7x64测试通过
作者: LTSC1809 时间: 2023-5-6 21:43
回复 10# czjt1234
我之前也试过wscript。quit,但是没用,原来是因为没加括号啊,感谢
作者: LTSC1809 时间: 2023-5-6 21:45
回复 11# LTSC1809
当时觉得这不是函数,所以就没加括号
作者: jyswjjgdwtdtj 时间: 2023-5-6 21:49
回复 12# LTSC1809
和这没关系!所有函数都可以以子程序的方式调用 只要不索取返回值
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |