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

[问题求助] [已解决]vbs代码,如果双击多次,运行了多次。就可能出现错误。如何避免?

本帖最后由 ygqiang 于 2015-1-21 18:47 编辑

vbs代码,如果双击多次,运行了多次。就可能出现错误。如何避免?
保证双击多次vbs,也只运行1次。

可以在vbs代码前面,加入个检测功能:
1、如果存在c:\tt.tt文件,就直接退出。
2、如果不存在,就建立c:\tt.tt文件,并执行后面的vbs代码
  1. Do
  2.   JK
  3. Loop
  4. '一直检查窗口标题
  5. Sub JK()
  6.   Dim wso,strTitle
  7.   strTitle = "Microsoft Windows"
  8.   Set wso = CreateObject("Wscript.Shell")
  9.   ' 一直检查窗口标题
  10.   Do While wso.AppActivate(strTitle) = False
  11.     WScript.sleep 200    ' 延时 0.2 秒
  12.     Call guan()
  13.   Loop
  14.   WScript.Sleep 500       ' 延时 0.5 秒
  15.   Call cunz()
  16.   wso.SendKeys "(%{F4})"   ' 发送 Alt + F4
  17.   wso.Run "Explorer.exe /n," '打开我的电脑
  18.   WScript.Sleep 500       ' 延时 0.5 秒
  19.   Call guan()
  20.   Set wso = NoThing
  21. End Sub
  22. '关闭重复窗口
  23. Sub guan()
  24.     Set Shell = CreateObject("Shell.Application")
  25.     Set Dict = CreateObject("Scripting.Dictionary")
  26.     Set Wins = Shell.Windows
  27.     For i=Wins.Count-1 To 0 step -1
  28.         If Instr(LCase(Wins(i).FullName),"\explorer.exe") Then
  29.             If Dict.Exists(Wins(i).LocationURL) Then
  30.                 Wins(i).Quit
  31.             Else
  32.                 Dict.Add Wins(i).LocationURL,True
  33.             End If
  34.         End If
  35.     Next
  36. End Sub
  37. '激活窗口
  38. Sub cunz()
  39.     set wshell = CreateObject("word.Application")
  40.     set wshellw = wshell.tasks
  41.     na="Microsoft Windows"
  42.     If wshellw.Exists(na) Then
  43.        wshellw(na).Activate         '激活窗口
  44.        wshellw(na).WindowState = 0  '0平常模式、1最大化模式、2最小化模式
  45.     End If
  46. End Sub
复制代码

返回列表