Public Function IsExeRunning(exeName As String) As Boolean
If testing Then Exit Function
On Error GoTo ErrorHandler
Dim flag As Boolean
Dim strComputer As String
Dim objWMI As Object, objProcessSet As Object, objProcess As Object
Dim strUserName As String
Dim strUserDomain As String
strComputer = "."
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objProcessSet = objWMI.ExecQuery("SELECT Name FROM Win32_Process WHERE Name = '" & exeName & "'")
'MsgBox objProcessSet.count
'MsgBox Environ$("username")
For Each objProcess In objProcessSet
objProcess.GetOwner strUserName, strUserDomain
'MsgBox strUserName
If strUserName = Environ$("username") Then
flag = True
Exit For
End If
'MsgBox "Process " & objProcess.Name & " is owned by " & strUserDomain & "\" & strUserName & "."
Next
'If objProcessSet.count > 0 Then
' flag = True
'Else
' flag = False
'End If
' For Each Process In objProcessSet
' If Process.Name = exeName Then
' flag = True
' Exit For
' End If
' Next
ErrorHandler:
Set objProcessSet = Nothing
Set objWMI = Nothing
If Err.Number <> 0 Then
IsExeRunning = True
Else
IsExeRunning = flag
End If
End Function
Public Function CntExeRunning(exeName As String) As Integer
If testing Then Exit Function
'On Error GoTo ErrorHandler
On Error Resume Next
'Dim flag As Boolean
Dim cnt As Integer
'cnt = 0
Dim strComputer As String
Dim objWMI As Object
Dim objProcessSet As Object
'Dim objProcess As Object
Dim strUserName As String
Dim strUserDomain As String
strComputer = "."
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objProcessSet = objWMI.ExecQuery("SELECT Name FROM Win32_Process WHERE Name = '" & exeName & "'")
'MsgBox objProcessSet.count
cnt = objProcessSet.count
'ErrorHandler:
If Err.Number <> 0 Then
'Do nothing as always error
'MyMsgBox Err.Number & " " & Err.Description, 10
'cnt = 0
End If
'MyMsgBox cnt & "", 10
Set objProcessSet = Nothing
Set objWMI = Nothing
CntExeRunning = cnt
End Function
Public Function KillExeRunning(exeName As String) As Boolean
If testing Then Exit Function
On Error Resume Next
Dim flag As Boolean
flag = False
Dim strComputer As String
Dim objWMI As Object, objProcessSet As Object, objProcess As Object
Dim strUserName As String
Dim strUserDomain As String
strComputer = "."
Set objWMI = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2")
Set objProcessSet = objWMI.ExecQuery("SELECT Name FROM Win32_Process WHERE Name = '" & exeName & "'")
If objProcessSet.count > 0 Then
For Each objProcess In objProcessSet
objProcess.GetOwner strUserName, strUserDomain
'MsgBox strUserName
If strUserName = Environ$("username") Then
End If
'MsgBox "Process " & objProcess.Name & " is owned by " & strUserDomain & "\" & strUserName & "."
If objProcess.Name = exeName Then
Dim errReturnCode As Integer
errReturnCode = objProcess.Terminate()
'MsgBox errReturnCode
If errReturnCode = 0 Then
flag = True
End If
End If
Next
End If
Set objProcessSet = Nothing
Set objWMI = Nothing
KillExeRunning = flag
End Function
3個關(guān)于進程的VBA函數(shù)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來刊头,“玉大人黍瞧,你說我怎么就攤上這事≡樱” “怎么了印颤?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長污尉。 經(jīng)常有香客問我膀哲,道長,這世上最難降的妖魔是什么被碗? 我笑而不...
- 正文 為了忘掉前任某宪,我火速辦了婚禮,結(jié)果婚禮上锐朴,老公的妹妹穿的比我還像新娘兴喂。我一直安慰自己,他們只是感情好焚志,可當(dāng)我...
- 文/花漫 我一把揭開白布衣迷。 她就那樣靜靜地躺著,像睡著了一般酱酬。 火紅的嫁衣襯著肌膚如雪壶谒。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼菌瘪,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了阱当?” 一聲冷哼從身側(cè)響起俏扩,我...
- 正文 年R本政府宣布拆魏,位于F島的核電站盯桦,受9級特大地震影響慈俯,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拥峦,卻給世界環(huán)境...
- 文/蒙蒙 一贴膘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧略号,春花似錦刑峡、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至羽利,卻和暖如春宫患,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背这弧。 一陣腳步聲響...