- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
有一个VBScript (.vbs) 脚本,是我公司的某人制作的。它打开和关闭某个应用程序,这个应用程序有一个托盘图标,每次它关闭(通过控制台杀死)应用程序时,托盘图标仍然存在。因此,在运行脚本一两天后,任务栏上会保留数百万个应用程序图标。
Windows 的 VBScript 中是否有刷新任务栏并删除这些图标的指令?
这是脚本:
*****************************************************************************************
' Progam Name: CheckConnection.vbs
' Program Purpose: This script check for an internec connection, the program pings to some domains,
' wait some seconds (5 seconds) before the next try, if a domain is found, reset all counters,
' and wait secondsBeforeNextCheck seconds before next check
' If the programs raise nMaxRetriesBeforeStartProgram then kill the program that
' manage the connection and start it again.
' Usage: This Script must be placed in ONE OF THE FOLLOWING PATHS
' 1) Start --> All Programs --> Start Up
' 2) HKLM\Software\Microsoft\Windows\CurrentVersion\Run
' 3)HKCU\Software\Microsoft\Windows\CurrentVersion\Run
' 4) Or you can create a task through:
' Start --> All Programs --> Accessories-->System Tools --> Scheduled Tasks--> Add Scheduled Task
' --> Follow the Wizard'
' 5) The program VZAccess Manager.exe must be configured to autoconnect through
' Tools --> Preferences --> WWan --> Connect Options --> Automatically Connect (this must be checked)
' 6) Also to autorefresh the ip the vzaccess manager.exe must be configured with an script when c onnect.
' Author: Benito Lopez
' Date: 06152009
' Revision 1.1 : (11272009) -f was added to force the program VZAccess manager.exe to terminate.
' *****************************************************************************************
Dim WshShell
Set WshShell = WScript.CreateObject("WScript.Shell")
Dim objfso, objfile
Set objfso = CreateObject("Scripting.FileSystemObject")
Dim secondsBeforeNextCheck
Dim strDomains(6)
Dim nMaxRetriesBeforeStartProgram
Dim nCounterRetries
Const ForReading=1, ForWriting=2, ForAppending=8
strDomains (0) = "www.google.com"
strDomains (1) = "www.yahoo.com"
strDomains (2) = "www.chilpak.com"
strDomains (3) = "www.microsoft.com"
strDomains (4) = "www.flutec.com"
strDomains (5) = "www.flutec.com.mx"
strLogFilename = "c:\checkconnectionlog.log"
filepinger = "c:\pingresult.log"
nMaxRetriesBeforeStartProgram =5
secondsBeforeNextCheck = 60000
secondsBeforeNextTry = 15000
secondsBeforeAppStart = 2000
secondsAfterAppStart = 60000
Call Main()
Sub Main()
set objfile = objfso.OpenTextFile(strLogFilename, 8,True)
WHILE 1
nCounterRetries = 0
FOR i = 0 TO 5 STEP 1
'Check the connection status if zero, means
'There is no internet connection or the domain is down
If not IsThereInternetConnection(strDomains(i)) THEN
'Let suppose the domain is down, so we must try with the next domain
nCounterRetries = nCounterRetries + 1
IF nCounterRetries >= nMaxRetriesBeforeStartProgram THEN
'Close the program
targetprogram = "taskkill /im " & chr(34) & "VZAccess Manager.exe" & chr(34) & " /f"
WshShell.Exec(targetprogram)
'Wait Applications Events 2 seconds
Wscript.Sleep(secondsBeforeAppStart)
'Start the program
targetprogram = chr(34) & "C:\Program Files\Verizon Wireless\VZAccess Manager\VZAccess Manager.exe" & chr(34) & " -m"
WshShell.Exec(targetprogram)
'Wait for the applications loads completely 1 seconds
WScript.Sleep(secondsAfterAppStart)
'Reset the counters
nCounterRetries = 0
Wscript.Sleep secondsBeforeNextCheck
END IF
'But we must wait some seconds before the next try
Wscript.Sleep secondsBeforeNextTry
ELSE
'If we get a reply from the current domain,
'Everything is OK, The only we need to do is Wait until the next time to check
'Reset Counter
nCounterRetries = 0
WScript.Sleep secondsBeforeNextCheck
END IF
NEXT
Wend
End Sub
FUNCTION IsThereInternetConnection(strDomain)
on error resume next
'Create some cons values
'Make the ping
Dim strRun
strRun = "%comspec% /c ping -n 1 " & strDomain & " > " & filepinger
Dim objwss
Set objwss = CreateObject("WScript.Shell")
'Hide the windows and wait the app to terminate
WriteLog "Pinging " & strDomain & " ..."
objwss.Run strRun,0,True
Set objwss = Nothing
''Read the ping
Dim strotf
Dim fso
Dim otf
strotf=""
set fso = CreateObject("Scripting.FileSystemObject")
set otf = fso.OpenTextFile(filepinger,ForReading)
strotf = otf.ReadAll
fso.DeleteFile filepinger
set fso = nothing
set otf = nothing
'Test the ping
IF InStr(strotf,"Reply from")>0 THEN
IsThereInternetConnection = TRUE
ELSE
IsThereInternetConnection = FALSE
END IF
WriteLog "Pinging Result " & IsThereInternetConnection & " Done."
End FUNCTION
Sub WriteLog(strLog)
on error resume next
Set objfile = objfso.GetFolder(strLogFilename)
if objfile.size > 50000 then
objfso.Close
objfso.DeleteFile strLogFilename
set objfile = objfso.OpenTextFile(strLogFilename, 8,True)
end if
'Add some useful information
strData = Now() & " - "
objfile.WriteLine strData & strLog
End Sub
最佳答案
将鼠标指针移到系统托盘中的孤立图标后,它们就会消失。我想这可以通过将 WM_MOUSEMOVE
消息发送到系统托盘窗口以编程方式完成,但 VBScript 无法访问 Windows API。
我建议您使用一些外部实用程序来刷新系统托盘并从您的脚本中运行它。例如,有 TrayIconBuster CodeProject 上的实用程序,它可以每 5 秒清理一次托盘。 (但它需要 .NET Framework。)或者您可以自己编写一个类似的工具。
要从 VBScript 代码运行应用程序,您可以使用 WshShell.Run
或 WshShell.Exec
方法。您可以在脚本中找到示例。
关于windows - 使用适用于 Windows 的 VBScript 刷新 Windows 任务栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2142214/
我正在使用下面的脚本来调用另一个脚本。问题是我必须将 WScript.Arguments 检索到的参数传递给我正在调用的第二个脚本。有人可以告诉我该怎么做吗。 Dim objShell Set obj
我正在使用下面的脚本来调用另一个脚本。问题是我必须将我通过 WScript.Arguments 检索的参数传递给我正在调用的第二个脚本。有人可以告诉我该怎么做吗。 Dim objShell Set o
我有一个非常简单的 vbscript 代码: Dim path As String = Environment.GetFolderPath(Environment.SpecialFolder.Prog
我需要将名称基于日期的文件移动到另一个文件夹。 文件结构为: 来源: \\network_location\folder\Filename_09-11-2012.txt 目的地: C:\Dump\Fi
我有一个关于 VBScript 中变量作用域的问题。我知道有以下关键字(来自 autoitscript.com ): Dim = 局部作用域,如果变量名在全局不存在(在这种情况下它重用全局变量!) G
我正在尝试在 VBScript 中运行以下代码但它没有编译最后一条语句。是不是因为VBScript不允许命名参数? Filename_Argument = WScript.Arguments(0) S
在VBScript中,我需要确保用户输入一个整数。 这是我现在所拥有的: WScript.Echo "Enter an integer number : " Number = WScript.StdI
使用这些信息,我学会了here和here。 我在下面创建了短代码。 当我运行代码并有意识地输入任务计划程序库的“\”文件夹中存在的任务时,我收到“任务不存在” msgbox。 我尝试在传递给函数的变量
我试图仅用VBScript编写一个小的脚本供家庭使用,该脚本在Macrium Reflect中进行预定备份之前运行。 我被困在一个看似很小的问题上,这是在物理断开网络驱动器(即未连接电缆)时的错误处理
我阅读了 Eric Lippert 关于 VBScript 中默认属性语义的文章:http://blogs.msdn.com/b/ericlippert/archive/2005/08/30/4580
我正在尝试使用 VBScript 过滤二维数组,但 VBScript 的内置“过滤器”函数仅适用于单维数组。我使用的是“rs.GetRows()”数组,那么是否有一个可以处理二维数组的简单函数? 编辑
尝试在 HP-UFT 中运行时,下面的 VBScript 代码让我感到困惑,因为第一个语句打印 True 而不是 False (这似乎不合逻辑),而第二个打印 False (这似乎合乎逻辑) 代码:
我刚刚了解到 $ 需要转义字符。 VBScript 中还有哪些特殊字符? 还有一个 bool 函数可以用来判断一个字符是否是特殊字符? 最佳答案 嗯? WScript.Echo "$" 输出 $ 而不
我需要将批处理文件转换为 vbscript,但我对两者都不熟悉。如果我能理解批处理文件中发生的事情,我就可以很容易地计算出 vbscript。问题是批处理文件运行一些 cscript 命令,其语法应该
已结束。此问题正在寻求书籍、工具、软件库等的推荐。它不满足Stack Overflow guidelines 。目前不接受答案。 我们不允许提出寻求书籍、工具、软件库等推荐的问题。您可以编辑问题,以便
长期以来,人们一直在批处理文件中嵌入和执行 VBScript。但是我看到的所有已发布的解决方案(在最初提出这个问题时)都涉及编写临时 VBS 文件。例如:Embed VBScript inside W
如何检查文件夹中是否存在任意名称的文件?我还想忽略子文件夹。 谢谢。 编辑: 我想我已经明白了,但也感谢任何贡献...... If Folder.Files.Count > 0 Then 'Do
我对编程很陌生,我想制作一个程序,从 Vb 脚本的列表中随机选择一个名称或句子。 这是列表: Jacob James Jason Caleb Ashlee John 程序需要从该列表中选择一个随机名称
如何检查文件夹中是否存在任意名称的文件?我还想忽略子文件夹。 谢谢。 编辑: 我想我已经明白了,但也感谢任何贡献...... If Folder.Files.Count > 0 Then 'Do
我需要一个 Vbscript,它可以从我的 PC 打开一个图像文件,并在几分钟后自动关闭。我计划通过命令提示符运行脚本,非常感谢任何帮助。 最佳答案 使用 HTML Application 可能更容易
我是一名优秀的程序员,十分优秀!