[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[问题求助] 求助VBS的msgbox函数,yesno两个按钮,按下按钮后无法执行单独的代码

本帖最后由 LTSC1809 于 2023-5-5 22:24 编辑

后面的if语句检测返回值是否为vbno,如果是,就结束vbs解释器的进程,但是测试中发现不管点是还是否结果都会运行后面的循环,觉得很疑惑,为了查错在if前加了个msgbox用来显示现在yesno这个变量获取到的返回值,也就是msgbox(yesno),结果竟然发现我点是则显示6,点否则显示7,为什么是数字啊,不应该是vbyes和vbno吗,这样导致这个if语句完全失效了啊,不管点什么都会进入到接下来的循环,有没有办法能让他如果点否就执行if里面那段代码啊,代码如下
  1. dim t,t1,t2,user_input,tout,yesno,jishu,wshShell
  2. user_input=clng(inputbox("设定运行次数:"))
  3. yesno=msgbox("如果输入数字非常大,则运行时间可能很长,确实要运行吗?",vbyesno,"警告")
  4. if yesno=vbno then
  5. Set wshShell = WScript.CreateObject("WScript.Shell")
  6. wshShell.run "TASKKILL /im 1.exe",0
  7. end if
  8. jishu=0
  9. t=timer()
  10. do until jishu=user_input
  11. jishu=jishu+1
  12. loop
  13. t1=timer()
  14. t2=t1-t
  15. if t2>3 then
  16. tout="输入的数字可能较大"
  17. else
  18. tout="输入的数字可能较小"
  19. end if
  20. msgbox tout&";消耗时间:"&t2&"秒",vbokonly,"运行结果"
复制代码

回复 1# LTSC1809


多查文档,不要按照自己认为的瞎猜。
http://bbs.bathome.net/include/js/script56/html/vsfctmsgbox.htm
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher 返回是6和7这点我也考虑过,if那里我试过把vbno改成7,主要问题是现在不管点是还是点否都无法退出,我希望能点否后执行if中的代码,来结束运行,标题可能有点误导,我去改一下,主要意思不是问为什么返回值是6和7,把if中的vbno改成7我也试过了,没有

TOP

回复 2# Batcher 抱歉,这些文章我很多看不懂的,也打开过,但是感觉和天书一样,于是后来就没再看过,今后有时间我去看看

TOP

vbYes = 6
vbNo = 7

你的代码没写点了 vbNo 后要退出程序
所以不管你点哪个都一样
那个 1.exe是什么?
如果点了 vbNo 要退出程序,就把 1.exe 改成 WScript.exe
或者在第六行插入一行 WScript.Quit()
1

评分人数


QQ 20147578

TOP

回复 5# czjt1234

这里确实错了,但是刚刚试了,改成wscipt.exe后还是点否也会继续运行下面的循环

TOP

WScript.exe
你拼写错误了

WScript.exe 是 vbs 的进程名

QQ 20147578

TOP

本帖最后由 LTSC1809 于 2023-5-6 18:30 编辑

回复 5# czjt1234 我文件中没有拼写错误,现在点no以后如果输入的数字很小那么会弹一个窗口然后瞬间关闭,快到看不到内容,后面的循环就不会执行了,但是如果输入数字大,运行时间长一点的话,那么最后的统计时间窗口还会弹出,循环也会运行,不知道为什么

TOP

我文件中没有拼写错误,现在点no以后如果输入的数字很小那么会弹一个窗口然后瞬间关闭,快到看不到内容,后面的循环就不会执行了,但是如果输入数字大,运行时间长一点的话,那么最后的统计时间窗口还会弹出,循环也会运行,不知道为什么

TOP

  1. user_input = 0 + inputbox("设定运行次数:")
  2. yesno = msgbox("如果输入数字非常大,则运行时间可能很长,确实要运行吗?", vbyesno, "警告")
  3. if yesno = vbno then WScript.Quit()
  4. jishu = 0
  5. t = timer()
  6. do until jishu = user_input
  7.     jishu = jishu + 1
  8. loop
  9. t1 = timer()
  10. t2 = t1 - t
  11. if t2 > 3 then
  12.     tout = "输入的数字可能较大" & vbCrLf
  13. else
  14.     tout = "输入的数字可能较小" & vbCrLf
  15. end if
  16. msgbox tout & "消耗时间:" & t2 & "秒", vbokonly, "运行结果"
复制代码
win7x64测试通过

QQ 20147578

TOP

回复 10# czjt1234


    我之前也试过wscript。quit,但是没用,原来是因为没加括号啊,感谢

TOP

回复 11# LTSC1809


    当时觉得这不是函数,所以就没加括号

TOP

回复 12# LTSC1809


    和这没关系!所有函数都可以以子程序的方式调用 只要不索取返回值

TOP

返回列表