获取进程列表

Option Explicit On

Private Const MAX_PATH As Integer = 260
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapShot As Long, ByVal uProcess As PROCESSENTRY32) As Long
Private Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapShot As Long, ByVal uProcess As PROCESSENTRY32) As Long
  Private 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 * MAX_PATH 
  End Type

Private Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Private Const TH32CS_SNAPPROCESS = &H2
Private Const TH32CS_SNAPheaplist = &H1
Private Const TH32CS_SNAPthread = &H4
Private Const TH32CS_SNAPmodule = &H8
Private Const TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule

'4.添加代码:
Private Sub Command1_Click()
    Dim i As Long
    Dim proc As PROCESSENTRY32
    Dim snap As Long
    Dim exename As String
    Dim theloop As Long
    Dim ret As ListItem
    ListView1.ListItems.Clear()   '清空所有内容
    snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
    proc.dwSize = Len(proc)
    theloop = ProcessFirst(snap, proc)
    i = 0
    While theloop <> 0
        exename = proc.szExeFile
        ret = ListView1.ListItems.Add(, "first" & CStr(i), exename)
        ListView1.ListItems("first" & CStr(i)).SubItems(1) = proc.th32ProcessID
        i = i + 1
        theloop = ProcessNext(snap, proc)
    End While
    CloseHandle(snap)
End Sub

'Command2是终止进程的,慎用!
Private Sub Command2_Click()
    Dim i As Long
    hand = OpenProcess(process_terminate, True, CLng(ListView1.SelectedItem.SubItems(1)))
    TerminateProcess(hand, 0)
    Call Command1_Click()
End Sub

Private Sub Form_Load()
    Dim header As ColumnHeader
    ListView1.View = lvwReport
    ListView1.ColumnHeaders.Clear()
    header = ListView1.ColumnHeaders.Add(, "first", "进程", 4000)
    header = ListView1.ColumnHeaders.Add(, "second", "ID", 1400)
    ListView1.Refresh()
End Sub 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值