vb 进程控制 查询 关闭

Option Explicit
Public Const sEndProess       As String = "excel.exe"         '注意必须小写
Public Declare Function CreateToolhelp32Snapshot Lib "kernel32 " (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
Public Declare Function Process32First Lib "kernel32 " (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function Process32Next Lib "kernel32 " (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
Public Declare Function CloseHandle Lib "kernel32 " (ByVal hObject As Long) As Long
Public Declare Function OpenProcess Lib "kernel32 " (ByVal dwDesiredAccess As Long, ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long

Public Declare Function TerminateProcess Lib "kernel32 " (ByVal ApphProcess As Long, ByVal uExitCode As Long) As Long

Public Type PROCESSENTRY32
dwSize   As Long
cntUsage   As Long
th32ProcessID   As Long
th32DefaultHeapID   As Long
th32ModuleID   As Long
cntThreads   As Long
th32ParentProcessID   As Long
pcPriClassBase   As Long
dwFlags   As Long
szExeFile   As String * 1024
End Type

Public Const TH32CS_SNAPHEAPLIST = &H1
Public Const TH32CS_SNAPPROCESS = &H2
Public Const TH32CS_SNAPTHREAD = &H4
Public Const TH32CS_SNAPMODULE = &H8
Public Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Public Const TH32CS_INHERIT = &H80000000
' '

Public Sub Exitexcel()
Dim pid   As Long
Dim pname As String
Dim my    As PROCESSENTRY32
Dim l     As Long
Dim l1    As Long
Dim flag  As Boolean
Dim mName As String
Dim i     As Integer

l = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
If l Then
    my.dwSize = 1060
    If (Process32First(l, my)) Then         '遍历第一个进程
        Do
            i = InStr(1, my.szExeFile, Chr(0))
            mName = LCase(Left(my.szExeFile, i - 1))
            If mName = LCase(sEndProess) Then
                pid = my.th32ProcessID
                pname = mName
                Dim mProcID     As Long
                mProcID = OpenProcess(1&, -1&, pid)
                TerminateProcess mProcID, 1&
                flag = True
                'Exit Sub
            Else
                flag = False
            End If
        Loop Until (Process32Next(l, my) < 1) &apos;遍历所有进程直到返回值为False
        MsgBox "ok"
    End If
    l1 = CloseHandle(l)
End If
End Sub
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值