如果有一个可执行文件正在运行  我怎么在知道文件名的情况下  结束这个文件所开启的进程

解决方案 »

  1.   

    http://www.codesky.net/showhtml/9618.htm或者你用google搜索
      

  2.   

    Private   Declare   Function   Findwindow   Lib   "user32"   Alias   "FindWindowA"   (ByVal   Class$,   ByVal   Caption$)   As   Long   
      Private   Declare   Function   SendMessage   Lib   "user32"   Alias   "SendMessageA"   (ByVal   hwnd   As   Long,   ByVal   wMsg   As   Long,   ByVal   wParam   As   Long,   lParam   As   Any)   As   Long   
      Const   WM_CLOSE   =   &H10   
        
        
      Sub   Main()   
      Dim   Wnd   As   Long   
      Wnd   =   Findwindow(vbNullString,   "你的窗体标题")   
      If   Wnd   <>   0   Then   
      iResult   =   MsgBox("Do   you   want   to   End:   "   &   M$,   4,   "KillApp")   
      If   iResult   =   6   Then   
      lResult   =   SendMessage(Wnd,   WM_CLOSE,   0,   0)   
      '关闭函数   
      End   If   
      End   
      End   If   
      End   Sub   
      

  3.   

    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
    Public Const PROCESS_TERMINATE = &H1Public Function CheckExE(ByVal ExePath As String) As Long
    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
    CheckExE = 0
    If (Process32First(l, my)) Then     '遍历第一个进程
               Do
                   i = InStr(1, my.szExeFile, Chr(0))
                   mName = LCase(Left(my.szExeFile, i - 1))
                   If FindStr(mName, ExePath) = True Then
                      CheckExE = my.th32ProcessID
                      flag = True
                      Exit Function
                    'Else
                    '  CheckExE = 0
                    '  flag = False
                    End If
               Loop Until (Process32Next(l, my) < 1)       '遍历所有进程知道返回值为False
           End If
           l1 = CloseHandle(l)
       End If
       
    End Function'结束一个进程
    Public Function EndPro(ByVal PID As Long)
    On Error Resume Next
        Dim lngHwndProcess As Long
        Dim hand As Long
        Dim exitCode As Long
        hand = OpenProcess(PROCESS_TERMINATE, True, PID)
        TerminateProcess hand, exitCode
        CloseHandle hand
    End Function
    if checkexe("qq.exe")<>0 then
       endpro checkexe("qq.exe")
    endif
      

  4.   

    FindStr  这个函数出错啊   怎么回事  还有   这个能不能检查到进程的用户名
      

  5.   

    '====================在字符串中查找指定字符=======================
    Public Function FindStr(ByVal iStr As String, ByVal iKey As String) As Boolean
    Dim I As Integer
    For I = 1 To Len(iStr) - (Len(iKey) - 1)
    If UCase(iKey) = UCase(Mid(iStr, I, Len(iKey))) Or UCase(iKey) = UCase(iStr) Then
    FindStr = True
    Exit Function
    Else
    FindStr = False
    End If
    Next I
    End Function