VBS上的计时器使用情况

时间:2013-10-23 09:11:58

标签: vbscript timer

我有一个示例代码来启用/禁用IE上的代理。

我想在此脚本上使用计时器。

如果启用了代理,并且如果用户使用以下脚本禁用代理,则在5分钟后,代理将自动再次激活。脚本手动执行此操作,但我想使用计时器自动执行。

如果代理已启用,则无需任何操作。它将始终启用。

感谢您的帮助

Const HKEY_CURRENT_USER = &H80000001
Set objShell = CreateObject("WScript.Shell")
strPC = objShell.ExpandEnvironmentStrings("%COMPUTERNAME%")

On Error Resume Next

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}! 
\\.\root\default:StdRegProv")

strKeyPath = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
strValueName = "ProxyEnable"

objReg.GetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue

If dwValue = 1 Then
IEPrompt = MsgBox ("IE Proxy is currently ENABLED on " & strPC & _
".  Do you want to DISABLE it?", vbQuestion+vbYesNo, "Disable IE Proxy")
If IEPrompt = vbYes Then
    dwValue = 0
    objReg.SetDWORDValue HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue 
    MsgBox "IE Proxy is now DISABLED on " & strPC & _
    ".",vbInformation, "Disable IE Proxy"
    ElseIf IEPrompt = vbNo Then
        MsgBox "IE Proxy is still ENABLED on " & strPC & _
        ".",vbInformation, "Disable IE Proxy"
End If
    ElseIf dwValue = 0 Then
    IEPrompt = MsgBox ("IE Proxy is currently DISABLED on " & strPC & _
    ".  Do you want to ENABLE it?", vbQuestion+vbYesNo, "Enable IE Proxy")
    If IEPrompt = vbYes Then
        dwValue = 1
        objReg.SetDWORDValue     HKEY_CURRENT_USER,strKeyPath,strValueName,dwValue
        MsgBox "IE Proxy is now ENABLED on " & strPC & _
        ".",vbInformation, "Enable IE Proxy"
        ElseIf IEPrompt = vbNo Then
            MsgBox "IE Proxy is still DISABLED on " & strPC & _
            ".",vbInformation, "Enable IE Proxy"
End If
End If

2 个答案:

答案 0 :(得分:0)

禁用代理时,在Run实例化对象中启动隐藏的vbs(WScript.Shell方法),等待(WScript.Sleep)5分钟,然后启用代理。

修改

在您的代码中,禁用代理

之后
WScript.CreateObject("WScript.Shell").Run "wscript.exe waitandenableproxy.vbs", 0, false

waitandenableproxy.vbs

WScript.Sleep 300000
WScript.CreateObject("WScript.Shell").RegWrite "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\ProxyEnable", 1, "REG_DWORD"

答案 1 :(得分:0)

怎么样?

Option Explicit

Const HKCU = &H80000001
Const KEY = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
Const VALUE = "ProxyEnable"
Const TITLE = "Disable IE Proxy"
Const DELAY = 300000 '5 minutes in milliseconds

Dim wmi
Dim iProx

Set wmi = GetObject("winmgmts:\\.\root\default:StdRegProv")

Call wmi.GetDWordValue(HKCU,KEY,VALUE,iProx)

Select Case iProx
  Case 1:
    If MsgBox("Proxy is enabled. Do you want to disable it?", vbQuestion+vbYesNo, TITLE) = vbYes Then
      'disable, delay, then re-enable
      Call wmi.SetDwordValue(HKCU,KEY,VALUE,0)
      Call WScript.Sleep(DELAY)
      Call wmi.SetDwordValue(HKCU,KEY,VALUE,1)
    End If
  Case 0:
    If MsgBox("Proxy is disabled. Do you want to enable it?", vbQuestion+vbYesNo, TITLE) = vbYes Then
      Call wmi.SetDwordValue(HKCU,KEY,VALUE,1)
    End If
End Select

Set wmi = Nothing
WScript.Quit