const filecount=2
dim ExeFiles (filecount-1)as string
dim nown as long
sub form_load()
ExeFiles(0)= "c:\windows\notepad.exe" '软件可执行文件的路径
ExeFiles(1)= "x:\xxxxxx\xxxxx.exe"
timer1.interval=60*1000'60秒
timer1.enabled=true
show
' me.hide'隐藏主窗口
end sub
sub timer1_timer()
on error resume next'防止运行不存在的exe文件而报错
shell exefiles(nown)
nown=nown+1
if nown=filecount then unload me
end sub
晕死,以为是VB区,给了你个VB6的例子,换个脚本的吧
把下面的内容复制到记事本里。依照注释,你可以按你的要求修改 filecount和ExeFiles的值使之符合你的要求
另存为xxxxx.vbs
然后把这个VBS文件复制到“开始”-“程序”-“启动”中使其开机自动运行即可
'功能:依次运行指定程序,有时间间隔
on error resume next'防止运行不存在的exe文件而报错,可有可无
DIM objShell
Set objShell = WScript.CreateObject("WScript.Shell")
dim ExeFiles(),filecount
dim nown
filecount=2 '要执行的程序数目
redim ExeFiles(filecount-1)
ExeFiles(0)= "c:\windows\notepad.exe" '软件可执行文件的路径 ,注意序数以0开始
ExeFiles(1)= "x:\xxxxxx\xxxxx.exe '第二个序数是1 ,以下依次类推
'ExeFiles(……
objShell.Sleep 120*1000 '先等120秒
for nown=0 to filecount-2 '依次运行
objShell.Run exefiles(nown)
objShell.Sleep 60*1000 '间隔60秒
next
objShell.Run exefiles(filecount-1)
我写个函数,你试试吧……也许可以用钩子,不过我不知道如何钩住进程结束事件。这个思路就是写个过程,一直循环,每秒扫描一次进程关了没有,关了过程才结束。放心,这个循环不会吃CPU。建立一个模块,写
Option Explicit
Private Declare Sub Sleep Lib "kernel32" Alias "Sleep" (ByVal dwMilliseconds As Long)'延时过程
Private Declare Function OpenProcess Lib "kernel32" Alias "OpenProcess" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Sub ShellAndWait(ByVal FileName As String)'FileName就是要打开的程序名
On Error Goto Handle'错误捕捉,防止要打开的文件不存在,当然最好这个过程别写在本过程里,提醒一下而已
Dim Pid As Long
Pid=Shell(FileName,vbNormalFocus)
CycStart:
Call Sleep(1000)'延时1000毫秒,你要是嫌扫描频率低,就降低一点,但太低了会耗CPU
If OpenProcess(1,0,Pid)<>0 Then Goto CycStart
Exit Sub
Handle:
MsgBox "出现错误!"
End Sub
模块Okay
假设App.path是C:\Windows,在某个过程里写
……
ShellAndWait "C:\Windows\1.exe"
ShellAndWait "C:\Windows\2.exe"
ShellAndWait "C:\Windows\3.exe"
……
就实现依次运行了。
PS:本 *** 作可能影响VB6自身,调试前请保存!最好编译成exe之后再调试。
命令执行期间,你的程序会停止响应(都是Sleep()的功劳),所有程序运行完才会有反应。所以运行时别乱点你的窗口。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)