fanliukund 发表于 2010-3-2 11:33:43

[求助]关闭软件后如何验证其进程是否退出(已解决)

假如..我关闭软件
但是其进程并没有退出

如何验证其进程是否存在

[ 本帖最后由 fanliukund 于 2010-5-4 09:39 编辑 ]

z_kh 发表于 2010-3-2 11:47:32

使用VBS查找进程,网上很多

xiaoyaoke 发表于 2010-3-2 14:00:54

VBS的wmi,进程列表中查看进程是否依然存在

fanliukund 发表于 2010-3-2 15:01:46

网上的都不清不楚的..
谁能给个精简版的...

例如检测QQ.exe

风雪夜归人 发表于 2010-3-2 16:37:36

strComputer = "."
strProcessName = "notepad.exe"

Set wbemServices = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")

Set wbemProcess = wbemServices.InstancesOf("Win32_Process")

For Each myProcess In wbemProcess
        If InStr(1, LCase(myProcess.Name), strProcessName, vbTextCompare) <> 0 Then
                ‘myProcess.Terminate ’关闭当前查找程序
                MsgBox "Find process: " & strProcessName
        End If
Next

如果需要关闭程序,在QTP下有个最简单的方法
SystemUtil.CloseProcessByName "process name"

风雪夜归人 发表于 2010-3-2 21:00:51

:L :L :L 汗流满脸

yujie6832 发表于 2010-3-3 09:38:07

原帖由 风雪夜归人 于 2010-3-2 16:37 发表 http://bbs.51testing.com/images/common/back.gif
strComputer = "."
strProcessName = "notepad.exe"

Set wbemServices = GetObject("winmgmts:\\"& strComputer & "\root\cimv2")

Set wbemProcess = wbemServices.InstancesOf("Win32_Process")

For Each ...
回答的不错:loveliness:

z_kh 发表于 2010-3-3 13:00:37

Public Function Close_Session(session_name)
   'msgbox session_name
   Dim objWMIService, objProcess, colProcessList
    Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
        Dim sel_var
        sel_var="SELECT * FROM WIN32_PROCESS WHERE NAME='" &session_name & "'"
'msgbox sel_var
    Set colProcessList = objWMIService.ExecQuery("SELECT * FROM WIN32_PROCESS WHERE NAME='" & session_name &"' ")
       
    For Each objProcess In colProcessList
      objProcess.Terminate
    Next

End Function
呵呵,发一段这个给你吧。。。可以直接调用关闭,如果需要知道是否存在也可以修改下代码。

feiyunkai 发表于 2010-3-8 16:57:12

'LZ问的是怎样验证关闭软件后,对应的进程是否一起关闭,而不是要关闭该进程。下面以关闭QQ软件后,验证QQ.EXE进程是否结束为例,函数如下:
CALL pro_find("QQ.EXE")

Public Function pro_find(pro_name)
set w=getobject("winmgmts:")                                                
set pro=w.execquery("select * from win32_process where name='"+pro_name+"'") '查找pro_name进程

      If pro.count<>0 then
                msgbox "该进程尚未关闭"         '如果正在运行的pro_name进程数量不等于0,则说明该进程尚未关闭
      else
                Msgbox "该进程已关闭"               '等于0,则说明该进程已关闭
      
      End If
set pro=nothing                                       '释放对象
set w=nothing                                          '释放对象                                 
End Function

[ 本帖最后由 feiyunkai 于 2010-3-8 17:11 编辑 ]

fanliukund 发表于 2010-3-8 21:03:46

原帖由 feiyunkai 于 2010-3-8 16:57 发表 http://bbs.51testing.com/images/common/back.gif
'LZ问的是怎样验证关闭软件后,对应的进程是否一起关闭,而不是要关闭该进程。下面以关闭QQ软件后,验证QQ.EXE进程是否结束为例,函数如下:
CALL pro_find("QQ.EXE")

Public Function pro_find(pro_name)
set...
这样就简单多了..免得一个进程一个进程查看
有一个进程就有一个报告
呵呵,非常谢谢

fanliukund 发表于 2010-3-8 21:05:37

回复 9# 的帖子

最佳答案
页: [1]
查看完整版本: [求助]关闭软件后如何验证其进程是否退出(已解决)