Board logo

标题: [系统相关] 批处理怎样发现一个指定的进程存在后就打开另一个程序? [打印本页]

作者: jialin2008    时间: 2010-3-30 10:55     标题: 批处理怎样发现一个指定的进程存在后就打开另一个程序?

比如说:它自动搜索,系统只要有QQ.exe的进程,他就会自动打开迅雷!

[ 本帖最后由 jialin2008 于 2010-3-30 10:56 编辑 ]
作者: slore    时间: 2010-3-30 11:47

tasklist
自己for下
作者: jialin2008    时间: 2010-3-30 11:53     标题: 谢谢 能不能把这个分成两个

Const ssfCONTROLS = 3
sConnectionName = "本地连接"  '可改成需要控制的连接名称,如"无线网络连接"、"本地连接 2"等
sEnableVerb = "启用(&A)"
sDisableVerb = "停用(&B)"

set wmi = GetObject("winmgmts:")
set colSystem = wmi.ExecQuery("select * from Win32_OperatingSystem")
for each objSystem in colSystem
    if Instr(UCase(objSystem.Caption),UCase("Windows XP")) then  '如果系统是WinXP
        sNetConnections = "网络连接"
        sDisableVerb = "停用(&B)"
    else  '如果系统是Win2000
        sNetConnections = "网络和拨号连接"
        sDisableVerb = "禁用(&B)"
    end if
next

set shellApp = createobject("shell.application")
set oControlPanel = shellApp.Namespace(ssfCONTROLS)

set oNetConnections = nothing
for each folderitem in oControlPanel.items
    if folderitem.name  = sNetConnections then
        set oNetConnections = folderitem.getfolder
        exit for
    end if
next

if oNetConnections is nothing then
    WScript.Echo "控制面板中未找到" & sNetConnections & "文件夹"
    wscript.quit
end if

set oLanConnection = nothing
for each folderitem in oNetConnections.items
    'WScript.Echo folderitem.name
    if lcase(folderitem.name)  = lcase(sConnectionName) then
        set oLanConnection = folderitem
        exit for
    end if
next

if oLanConnection is nothing then
    WScript.Echo  sNetConnections & "中未找到'" & sConnectionName & "'项目"
    wscript.Quit
end if

bEnabled = true
set oEnableVerb = nothing
set oDisableVerb = nothing
s = "Verbs: " & vbcrlf
for each verb in oLanConnection.verbs
    'WScript.Echo verb.name
    's = s & vbcrlf & verb.name
    if verb.name = sEnableVerb then
        set oEnableVerb = verb
        bEnabled = false
    end if
    if verb.name = sDisableVerb then
        set oDisableVerb = verb
    end if
next

'debugging displays left just in case...
'
'msgbox s ': wscript.quit
'msgbox "Enabled: " & bEnabled ': wscript.quit

'not sure why, but invokeverb always seemed to work
'for enable but not disable.
'
'saving a reference to the appropriate verb object
'and calling the DoIt method always seems to work.
'
if bEnabled then
    '  oLanConnection.invokeverb sDisableVerb
    'if msgbox(sConnectionName & " 当前状态:已启用", 36, "是否停用")=vbYes then
    oDisableVerb.DoIt
    'then
else
    '  oLanConnection.invokeverb sEnableVerb
    'if msgbox(sConnectionName & " 当前状态:已禁用", 36, "是否启用")=vbYes then
    oEnableVerb.DoIt
    'then
end if

'adjust the sleep duration below as needed...
'
'if you let the oLanConnection go out of scope
'and be destroyed too soon, the action of the verb
'may not take...
'
wscript.sleep 1000

set oNetConnections = nothing
set oLanConnection = nothing
set oEnableVerb = nothing
set oDisableVerb = nothing

启用和停用分开
作者: wukaka    时间: 2010-3-30 18:16

好长,万里长城………
作者: slore    时间: 2010-3-30 18:55

If bEnabled Then
   
'  oLanConnection.invokeverb sDisableVerb
    'if msgbox(sConnectionName & " 当前状态:已启用", 36, "是否停用")=vbYes then
   
oDisableVerb.DoIt
    'then
Else
   
'  oLanConnection.invokeverb sEnableVerb
    'if msgbox(sConnectionName & " 当前状态:已禁用", 36, "是否启用")=vbYes then
   
oEnableVerb.DoIt
    'then
End If


2个脚本分别替换成里面的单独2句。
作者: crartor    时间: 2010-3-30 23:35

@Echo off
:B
tasklist|Find "QQ.exe" >nul&&Start 路径\Thunder.exe
ping 127.1 -n 8 >nul
goto B




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2