查找进程MSN

来源:互联网 发布:淘宝客鹊桥和团长活动 编辑:程序博客网 时间:2024/06/16 10:57

   Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal dwFlags As Long, ByVal th32ProcessID As Long) As Long
  Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
  Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, lppe As PROCESSENTRY32) As Long
  Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
   
  Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
          ByVal blnheritHandle As Long, ByVal dwAppProcessId As Long) As Long
   
  Private Declare Function TerminateProcess Lib "kernel32" (ByVal ApphProcess As Long, _
          ByVal uExitCode As Long) 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 * 1024
  End Type
   
  Const TH32CS_SNAPHEAPLIST = &H1
  Const TH32CS_SNAPPROCESS = &H2
  Const TH32CS_SNAPTHREAD = &H4
  Const TH32CS_SNAPMODULE = &H8
  Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
  Const TH32CS_INHERIT = &H80000000
   
  Dim pid     As Long
  Dim pname     As String
   
  Private Sub Command1_Click()
      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
                            List.AddItem " " & my.szExeFile
                            i = InStr(1, my.szExeFile, Chr(0))
                            mName = LCase(Left(my.szExeFile, i - 1))
                  If mName = "msnmsgr.exe" Then
                            pid = my.th32ProcessID
                            pname = mName
                            MsgBox "找到msn"
                                If MsgBox("你想删除   " & mName & "   进程?", vbYesNo + vbQuestion) <> vbYes Then
                                    Exit Sub
                                End If

                            Dim mProcID     As Long
                            mProcID = OpenProcess(1&, -1&, pid)
                            TerminateProcess mProcID, 0&
                            flag = True
                            Exit Sub
                    Else
                            flag = False
                    End If
              Loop Until (Process32Next(l, my) < 1)             '遍历所有进程直到返回值为False
          End If
          l1 = CloseHandle(l)
      End If
       
      If flag = False Then
          MsgBox "没有找到msn"
          Shell "d:/windows/notepad.exe", vbNormalFocus   '打开系统记事本程序。(可执行文件)
      End If
  End Sub

 

原创粉丝点击