Убить Процесс В Windows На Ls

Тема в разделе "Работа с API", создана пользователем savl, 19 окт 2012.

  1. savl

    savl Lotus team
    Lotus team

    Регистрация:
    28 окт 2011
    Сообщения:
    2.052
    Симпатии:
    146
    Наткнулся в инете, может кому пригодится.
    Источник
    Ну и код, если ссылка будет недоступна.
    Код (LotusScript):
    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 * 260
    End Type
    '-------------------------------------------------------
    Declare Function OpenProcess Lib "kernel32.dll" (Byval dwDesiredAccess As Long, Byval blnheritHandle As Long, Byval dwAppProcessId As Long) As Long
    Declare Function ProcessFirst Lib "kernel32.dll" Alias "Process32First" (Byval hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Declare Function ProcessNext Lib "kernel32.dll" Alias "Process32Next" (Byval hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
    Declare Function CreateToolhelpSnapshot Lib "kernel32.dll" Alias "CreateToolhelp32Snapshot" (Byval lFlags As Long, lProcessID As Long) As Long
    Declare Function TerminateProcess Lib "kernel32.dll" (Byval ApphProcess As Long, Byval uExitCode As Long) As Long
    Declare Function CloseHandle Lib "kernel32.dll" (Byval hObject As Long) As Long


    Public Sub KillProcess(NameProcess As String)
    Const PROCESS_ALL_ACCESS = &H1F0FFF
    Const TH32CS_SNAPPROCESS = 2&
    Dim uProcess As PROCESSENTRY32
    Dim RProcessFound As Long
    Dim hSnapshot As Long
    Dim SzExename As String
    Dim ExitCode As Long
    Dim MyProcess As Long
    Dim AppKill As Boolean
    Dim AppCount As Integer
    Dim i As Integer
    Dim WinDirEnv As String

    If NameProcess <> "" Then
    AppCount = 0

    uProcess.dwSize = Len(uProcess)
    hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&)
    RProcessFound = ProcessFirst(hSnapshot, uProcess)

    Do
    i = Instr(1, uProcess.szexeFile, Chr(0))
    SzExename = Lcase$(Left$(uProcess.szexeFile, i - 1))
    WinDirEnv = Environ("Windir") + "\"
    WinDirEnv = Lcase$(WinDirEnv)

    If Right$(SzExename, Len(NameProcess)) = Lcase$(NameProcess) Then
    AppCount = AppCount + 1
    MyProcess = OpenProcess(PROCESS_ALL_ACCESS, False, uProcess.th32ProcessID)
    AppKill = TerminateProcess(MyProcess, ExitCode)
    Call CloseHandle(MyProcess)
    End If
    RProcessFound = ProcessNext(hSnapshot, uProcess)
    Loop While RProcessFound
    Call CloseHandle(hSnapshot)
    End If
    End Sub
     
Загрузка...

Поделиться этой страницей