当前位置:文档之家› 让系统按照顺序启动程序的方法

让系统按照顺序启动程序的方法

让系统按照顺序启动程序的方法

choice批处理命令
@echo off
choice /t 5 /d y /n >nul
start pplive.exe
首先我有七个必要的开机启动项但是机子配置有点低所以想自定延迟启动(也就是进入桌面后十来秒在启动非系统启动项)有这样的设置软件吗??有的话麻烦给个地址
问题补充:
wscript.sleep 15000
CreateObject("WScript.Shell").run "这个e:\qq.lnk" 只能为启动项的路径??,x,ture
面包会有的,分也会多加给你的...

最佳答案
请把“----”之间的内容,复制到记事本中,并另存为 所有文件,**.vbs, 其中要执行的内容可以按格式 套用。
rem+空格后面的文本可以任意修改,wscript.sleep 15000 这行为延时15000毫秒。时间以毫秒自行修改。
做完以后,将这一**.vbs文件 设为启动项,清除其他项即可。

另说一下,你的题很难,分给的太少了。

————————————————————
rem 延时15000毫秒后执行qq的快捷方式
wscript.sleep 15000
rem 以QQ在E盘跟下为例:
rem 下面的 create……ture ,为一行。
CreateObject("WScript.Shell").run "e:\qq.lnk" ,x,ture

————————————————————
其中的程序可以为com ,vbs,bat,cmd,exe,lnk等可执行文件。
x为参数 下面为可选值:
0 隐藏一个窗口并激活另一个窗口。
1 激活并显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置。第一次显示该窗口时,应用程序应指定此标志。
2 激活窗口并将其显示为最小化窗口。
3 激活窗口并将其显示为最大化窗口。
4 按最近的窗口大小和位置显示窗口。活动窗口保持活动状态。
5 激活窗口并按当前的大小和位置显示它。
6 最小化指定的窗口,并按照 Z 顺序激活下一个顶部窗口。
7 将窗口显示为最小化窗口。活动窗口保持活动状态。
8 将窗口显示为当前状态。活动窗口保持活动状态。
9 激活并显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置。还原最小化窗口时,应用程序应指定此标志。
10 根据启动应用程序的程序状态来设置显示状态 。


嵌入式系统中,一个任务往往需要在特定的延时之后执行一个指定的动作,比如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等。这就需要利用定时器机制来计量特定长度的时间段。VnWorks作为实时嵌入式系统,提供多样的定时接口函数。下面列举一些常用的定时方式,并说明其注意事项。

1 taskDelav

taskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用于任务调度(将CPU交给同一优先级的

其他任务)外,任务延时也常用于等待某一外部事件,作为一种定时/延时机制。在没有中断触发时,taskDelay能很方便地实现,且不影响系统整体性能。例如写数据至EEPROM,EEPROM需要一个内部擦除时间(最大擦除时间为lOms)。以下所提及的一个tick都假设为16.67 ms(1/60 s)。可以简单地调用taskDelay(2)来保证数据擦写完成。按理说taskDelay(1)就足以保证,为什么需要taskDelay(2)呢?

这正是taskDelay使用的一个缺陷,使用时需要注意。taskDelay(n)表示任务延时至第n个系统时钟到来的时刻,如图1所示。如果在A时刻调用taskDelay(1)仅延时5 ms,则在B时刻taskDelay(1)就刚好是一个tick周期。可见需要10 ms的延时就必须调用taskDelay(2)才能实现。taskDelay有接近一1个tick的误差存在,taskDelay(n)实际上是延时(n-1)tick~n tick的时间。延时精度为l/n,延时1s就是taskDelay(60)的误差极限为1.6%,而taskDelay(1)的误差极限将是100%。

使用taskDelay需注意的另外一点是:即使经过n个tick,调用延时的任务也不保证返回执行状态,可能有更高或相同优先级的任务占用了CPU。

2 WatchDog

VxWorks提供了一种通用的看门狗定时器机制。利用提供的函数,任何任务都可以创建一个看门狗定时器,经过指定的延时后,实现在系统时钟ISR的上下文中运行指定的程序。需要注意的是,看门狗定时触发的程序是在中断级别上执行,而不是在任务的上下文中。因此,看门狗定时挂接的程序编写有一定的限制,这个限制条件与中断服务程序的约束是一样的。比如,不能使用获取信号量的语句,以及像printf()这样的I/O系统函数。

通过wdCreate()可以创建一个看门狗定时器。调用wdStart()启动定时器,延时参数同taskDelay一样以tick为单位,同时还须指定定时完成后要调用的程序。如果应用程序同时需要多个看门狗函数,则应使用wdCreate()产生多个独立的看门狗ID。因为对于给定的看门狗ID,通过wdStart()只能关联一个看门狗函数。在指定的tick计数到达之前,要取消一个看门狗计时器,可以通过调用wdCancel()实现。每调用一次wdStart(),看门狗定时器只执行一次,因此对于一些要求周期性执行的应用程序,要获得该效果,则定时器函数本身必须通过递归调用wdStart()来重新启动定时器。

如果利用看门狗定时器实现延时,则存在与taskDelay一样的精度上的缺陷,以tick为基准.并且看门狗关联的函数所受的限制很大,这也是使用不便的一个方面。不过启动看门狗的任务不会被阻塞,因为wdStart()调用立即返回并继续执行。

3 sleep/nanosleep

sleep()和nanosleep()是VxWorks提供的延时函数接口。sleep以s为单

位,nanosleep可以提供更精确的延时;传参是时钟的结构体,参数可以精确到ns,但实际上只能做到大于或等于这个时问。因为skep或nanosleep函数延时的时间基准仍是tick,调用此函数的任务处于任务延时状态,这点与taskDelay()一致。不同的地方是,taskDelay()是用于任务调度,taskDelay(O)有其自身的含义,而sleep(O)则是没有意义的。前面提过,taskDelay(n)延时时间为(n-1)tick~ntick,而sleep/nanosleep则保证实际延时时间大于或等于设定的时间参数。这一点可以通过编写一个测试程序试验证明。代码如下:


开机启动项自定延迟启动(vbs)

实用知识 2009-06-06 01:31:38 阅读117 评论0 字号:大中小 订阅
请把“----”之间的内容,复制到记事本中,并另存为 所有文件,**.vbs, 其中要执行的内容可以按格式 套用。
rem+空格后面的文本可以任意修改,wscript.sleep 15000 这行为延时15000毫秒。时间以毫秒自行修改。
做完以后,将这一**.vbs文件 设为启动项,清除其他项即可。


————————————————————
rem 延时15000毫秒后执行qq的快捷方式
wscript.sleep 15000
rem 以QQ在E盘跟下为例:
rem 下面的 create……ture ,为一行。
CreateObject("WScript.Shell").run "e:\qq.lnk" ,x,ture

————————————————————
其中的程序可以为com ,vbs,bat,cmd,exe,lnk等可执行文件。
x为参数 下面为可选值:
0 隐藏一个窗口并激活另一个窗口。
1 激活并显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置。第一次显示该窗口时,应用程序应指定此标志。
2 激活窗口并将其显示为最小化窗口。
3 激活窗口并将其显示为最大化窗口。
4 按最近的窗口大小和位置显示窗口。活动窗口保持活动状态。
5 激活窗口并按当前的大小和位置显示它。
6 最小化指定的窗口,并按照 Z 顺序激活下一个顶部窗口。
7 将窗口显示为最小化窗口。活动窗口保持活动状态。
8 将窗口显示为当前状态。活动窗口保持活动状态。
9 激活并显示窗口。如果窗口处于最小化或最大化状态,则系统将其还原到原始大小和位置。还原最小化窗口时,应用程序应指定此标志。
10 根据启动应用程序的程序状态来设置显示状态





Dim Wsr
Set Wsr = WScript.CreateObject("WScript.Shell")
'下面表示延迟启动的时间,单位毫秒。
WScript.Sleep(1000)
Wsr.Run """F:\系统工具\Process Explorer\procexp.exe""",,False
WScript.Sleep(2000)
Wsr.Run "D:\tool\nircmd\nircmd.exe inetdial 'ADSL'",0,False
WScript.Sleep(3000)
Wsr.Run """C:\Program Files\xplorer2\xplorer2.exe""",2,False
Set Wsr = NoThing
'结束指定进程
'KillProcess("xxxx")
WScript.quit

'Run 解释
'第一个参数
'程序路径,包含空格时外面是三个引号。

'第二个参数
'0 隐藏窗口并激活另一窗口。
'1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。
'2 激活窗口并以最小化显示该窗口。
'3 激活窗口并以最大化显示该窗口。
'4 按窗口最近的大小和位置显示。活动窗口保持活动。
'5 以当前大小和位置激活并显示窗口。
'6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。
'7 最小化显示窗口。活动窗口保持活动。
'8 以当前状态显示窗口。活动窗口保持活动。
'9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。

'第三个参数
'True 等待程序结束或中止后再继续执行后面的脚本。
'False 直接执行后面的脚本。自动延迟启动用这个。

Function KillProcess(NameorPID)
Dim oWMI, oProcs, regEx, oProc
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
'查询语句,WHERE 后判断进程名是否存在进程中!
If IsNumeric(NameOrPID) Then
Set oProcs = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Handle='" & NameOrPID & "'")
Else
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "/.+\.(com|exe)$/"
If regEx.Test(NameOrPID) Then
Set oProcs = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & NameOrPID & "'")
Else
Set oProcs = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & NameOrPID & ".exe'")
End If
Set regEx = Nothing
End If
'终止上面查询到的进程
For Each oProc in oProcs
oProc.Terminate
Next
Set oProc = NoThing
Set oProcs = NoThing
Set oWMI = NoThing
End Function


我一直在用一个很简单的脚本,保存为 ***.vbs 就行了。添加到启动文件夹或放在桌面,随便怎样都行。
Dim Wsr
Set Wsr = WScript.CreateObject("WScript.Shell")
'下面表示延迟启动的时间,单位毫秒。
WScript.Sleep(1000)
Wsr.Run """F:\系统工具\Process Explorer\procexp.exe""",,False
WScript.Sleep(2000)
Wsr.Run "D:\tool\nircmd\nircmd.exe inetdial 'ADSL'",0,False
WScript.Sleep(3000)
Wsr.Run """C:\Program Files\xplorer2\xplorer2.exe""",2,False
Set Wsr = NoThing
'结束指定进程
'KillProcess("xxxx")
WScript.quit

'Run 解释
'第一个参数
'程序路径,包含空格时外面是三个引号。

'第二个参数
'0 隐藏窗口并激活另一窗口。
'1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。
'2 激

活窗口并以最小化显示该窗口。
'3 激活窗口并以最大化显示该窗口。
'4 按窗口最近的大小和位置显示。活动窗口保持活动。
'5 以当前大小和位置激活并显示窗口。
'6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。
'7 最小化显示窗口。活动窗口保持活动。
'8 以当前状态显示窗口。活动窗口保持活动。
'9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。

'第三个参数
'True 等待程序结束或中止后再继续执行后面的脚本。
'False 直接执行后面的脚本。自动延迟启动用这个。

Function KillProcess(NameorPID)
Dim oWMI, oProcs, regEx, oProc
Set oWMI = GetObject("winmgmts:\\.\root\cimv2")
'查询语句,WHERE 后判断进程名是否存在进程中!
If IsNumeric(NameOrPID) Then
Set oProcs = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Handle='" & NameOrPID & "'")
Else
Set regEx = New RegExp
regEx.IgnoreCase = True
regEx.Global = True
regEx.Pattern = "/.+\.(com|exe)$/"
If regEx.Test(NameOrPID) Then
Set oProcs = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & NameOrPID & "'")
Else
Set oProcs = oWMI.ExecQuery("SELECT * FROM Win32_Process WHERE Name='" & NameOrPID & ".exe'")
End If
Set regEx = Nothing
End If
'终止上面查询到的进程
For Each oProc in oProcs
oProc.Terminate
Next
Set oProc = NoThing
Set oProcs = NoThing
Set oWMI = NoThing
End Function
复制代码




相关主题
文本预览
相关文档 最新文档