打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
VB 通过进程名字结束进程
    '*************************************************************************
'**模 块 名:ModFindProcess
'**说   明:进程相关操作
'**创 建 人:马大哈 http://www.m5home.com/
'**日   期:2006年3月18日
'**日   期:2007年1月23日
'**描   述:改进了结束进程的条件,可以根据PID来结束
'**版   本:V1.3
'*************************************************************************
Option Explicit

Private Declare Function ProcessFirst Lib"kernel32" Alias"Process32First" (ByValhSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib"kernel32" Alias"Process32Next" (ByValhSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function CreateToolhelpSnapshot Lib"kernel32" Alias"CreateToolhelp32Snapshot"(ByVal lFlags As Long, lProcessID As Long) As Long
Private Declare Function TerminateProcess Lib"kernel32" (ByVal hProcess AsLong, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib"kernel32" (ByValdwDesiredAccess As Long, ByVal bInheritHandle As Long, ByValdwProcessId As Long) As Long

Private Const FORMAT_MESSAGE_ALLOCATE_BUFFER = &H100
Private Const FORMAT_MESSAGE_FROM_SYSTEM = &H1000
Private Const TH32CS_SNAPPROCESS As Long = 2&
Private Const PROCESS_TERMINATE = 1

Private Type PROCESSENTRY32
    dwSize AsLong
    cntUsage AsLong
   th32ProcessID As Long
   th32DefaultHeapID As Long
    th32ModuleIDAs Long
    cntThreadsAs Long
   th32ParentProcessID As Long
   pcPriClassBase As Long
    dwFlags AsLong
    szexeFile AsString * 260
End Type

Private Type MyProcess
    ExeName AsString
    PID AsLong
End Type

Public Function CloseProcess(Optional ByVal ProName As String,Optional ByVal PID As Long) As Integer
   '传入进程名或PID,结束相应进程
    Dim tPID AsLong
    Dim tPHwndAs Long
    Dim ProArr()As String, PIDArr() As Long
    Dim I AsLong
   
    CallListProcess(ProArr, PIDArr)
    For I = 1 ToUBound(ProArr)
       If PIDArr(I) = PID Or ProArr(I) = ProNameThen     '配对进程ID或进程名
           Exit For
       End If
    Next I
   
    If I >UBound(PIDArr) Then Exit Function
    tPID =PIDArr(I)
   
    tPHwnd =OpenProcess(PROCESS_TERMINATE, False, tPID)
    Debug.PrinttPHwnd
    If tPHwndThen
       CloseProcess = TerminateProcess(tPHwnd, 0)
    End If
End Function

Public Function FindProcess(ByVal ProName As String, Optional ByRefPID As Long) As Boolean
   '传入进程名,如果进程存在,在PID里返回进程ID,函数返回True,否则返回Flase
    'ProName:指定进程名
    'PID:如果进程名存在,返回其PID
    '返回值:进程名存在返回TRUE,否则返回FALSE
    Dim ProArr()As String, PIDArr() As Long
    Dim I AsLong
   
    CallListProcess(ProArr, PIDArr)
    For I = 1 ToUBound(ProArr)
       If ProArr(I) = ProName Then
           PID = PIDArr(I)
           FindProcess = True
           Exit For
       End If
    Next I
End Function

Public Function ListProcess(ByRef ProExeName() As String, ByRefProPid() As Long)
   '列出进程以及相应PID
   'ProExeName(): 进程名
    'ProPid():相应的PID
    DimMyProcess As PROCESSENTRY32
    DimmySnapshot As Long
    DimProData() As MyProcess
    Dim I AsLong
   
    ReDimProData(0)
   
   MyProcess.dwSize = Len(MyProcess)
    mySnapshot =CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    ProcessFirstmySnapshot, MyProcess
   
    ReDimPreserve ProData(UBound(ProData) + 1)
   
   ProData(UBound(ProData)).ExeName = Left(MyProcess.szexeFile,InStr(MyProcess.szexeFile, Chr(0)) - 1)
   ProData(UBound(ProData)).PID = MyProcess.th32ProcessID
   
    'Debug.PrintProData(UBound(ProData)).ExeName
   
   MyProcess.szexeFile =""
   
    WhileProcessNext(mySnapshot, MyProcess)
       ReDim Preserve ProData(UBound(ProData) + 1)
       
       ProData(UBound(ProData)).ExeName = Left(MyProcess.szexeFile,InStr(MyProcess.szexeFile, Chr(0)) - 1)
       ProData(UBound(ProData)).PID = MyProcess.th32ProcessID
       
      Debug.PrintProData(UBound(ProData)).ExeName
       
       MyProcess.szexeFile =""
    Wend
   
    ReDimProExeName(UBound(ProData))
    ReDimProPid(UBound(ProData))
   
    For I = 1 ToUBound(ProData)
       With ProData(I)
           ProExeName(I) = .ExeName
           ProPid(I) = .PID
       End With
    Next I
End Function
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Python—创建进程的三种方式
C# 如何捕获文件的关闭事件
进程控制块PCB(Process Control Block)
ubound
进程的概念与结构
读取交易软件的内存
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服