Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Как завершыть процесс (любой) Добавлено: 09.03.05 15:48  

Автор вопроса:  -=J:M=- | Web-сайт: www.soft4free.net | ICQ: 361471 
Как с Бейсика можно убить процесс какой нить. спасибо...

Ответить

  Ответы Всего ответов: 18  

Номер ответа: 1
Автор ответа:
 User Unknown



Вечный Юзер!

ICQ: uu@jabber.cz 

Вопросов: 120
Ответов: 3302
 Профиль | | #1 Добавлено: 09.03.05 15:51
TerminateProcess
TerminateThread

P.S. А разве в факе у нас ещё этого нет?

Ответить

Номер ответа: 2
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 09.03.05 21:08
& AdjustTokenPrivileges

Ответить

Номер ответа: 3
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #3 Добавлено: 09.03.05 22:11
Да-да, самое главное это — AdjustTokenPrivileges :))
Только кода там страницы на три...

Ответить

Номер ответа: 4
Автор ответа:
 Александр



Разработчик Offline Client

ICQ: 204034 

Вопросов: 106
Ответов: 1919
 Профиль | | #4 Добавлено: 10.03.05 14:19
2 UU: Нету, т.к. у меня глючит FaqOn!, а без него ой как трудно бить факи...
Артема не могу выловить - их сервак мне выплевывает мне письма с багрепортами
назад. Да я пробовал в ворде - такая маза в жизни бывает только раз (с) :))
Это я про НеЧаВо, а про Библиотеку кодов я не знаю...

Ответить

Номер ответа: 5
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #5
Добавлено: 10.03.05 15:38
AdjustTokenPrivileges - почему ето самое главное? там одной функцией не обойдется???

Ответить

Номер ответа: 6
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #6
Добавлено: 10.03.05 15:40
если не трудно, роскажыте поподробнее как и что надо для етогоб если я знаю токо название процесса!

Ответить

Номер ответа: 7
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #7 Добавлено: 10.03.05 15:50
sne! Помоги человеку с Adjust'ом

Одной — неа, я видал один такой пример("Access";) :))))

Ответить

Номер ответа: 8
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #8 Добавлено: 10.03.05 15:54
sne! Помоги человеку с Adjust'ом

...там одной функцией не обойдется???
Одной — неа, я видал один такой пример("Access";) :))))

Ответить

Номер ответа: 9
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #9
Добавлено: 10.03.05 21:00
если можно примером =)

Ответить

Номер ответа: 10
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #10 Добавлено: 10.03.05 21:28
та ну полно примеров!


FUNCTION Spliting(BYREF inString AS ASCIIZ, BYREF sDelimeter AS STRING) AS STRING
    LOCAL ub() AS STRING
    IF LEN(inString) = 0& THEN EXIT FUNCTION
    REDIM ub(0)
    PARSE inString, ub(), sDelimeter
    Spliting = ub(UBOUND(ub))
END FUNCTION

FUNCTION FillProcLst(BYREF outArray() AS PROCESSENTRY32) AS LONG
    LOCAL hSnapshot AS LONG, cnt AS LONG, uProcess AS PROCESSENTRY32
    hSnapshot = CreateToolhelp32Snapshot(%TH32CS_SNAPPROCESS, 0&;)
    IF hSnapshot = &HFFFFFFFF THEN FillProcLst = &HFFFFFFFF: _
                                   EXIT FUNCTION
    uProcess.dwSize = SIZEOF(uProcess)
    CALL Process32First(hSnapshot, uProcess)
    ;DO
        REDIM PRESERVE outArray(cnt)
        uProcess.szExeFile = Spliting(uProcess.szExeFile, "\";)
        outArray(cnt) = uProcess
        uProcess.szExeFile = STRING$(%MAX_PATH, 0&;)
        INCR cnt
        LOOP WHILE (Process32Next(hSnapshot, uProcess))
    CALL CloseHandle(hSnapshot)
    FUNCTION = cnt - 1&
END FUNCTION

SUB KillProcByPID(BYVAL ID AS LONG)
    ;DIM hProcess AS LONG
    hProcess = OpenProcess(&H1F0FFF, 1&, ID)
    CALL TerminateProcess(hProcess, 0&;)
    CALL CloseHandle(hProcess)
END SUB

SUB KillProcByName(BYREF szPrcName AS ASCIZ)
    LOCAL i AS LONG, arr() AS PROCESSENTRY32
    REDIM arr(0)
    FOR i = 0 TO FillProcLst(arr())
        IF szPrcName = arr(i).szExeFile THEN CALL KillProcByPID(arr(i).th32ProcessID)
    NEXT
END SUB                                                


API пойщи сам, это с PB.

P.S. Писал всё тот же Sne.

Ответить

Номер ответа: 11
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #11
Добавлено: 10.03.05 22:49
че то у меня етот пример не канает, ошыбок очень много...

Ответить

Номер ответа: 12
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #12
Добавлено: 10.03.05 23:05
как можно узнать ID процесса? поскольку KillProcByPID ошыбок не вызывает

Ответить

Номер ответа: 13
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #13
Добавлено: 11.03.05 02:16
Ну я-то без проблемм, помогу:

кинь на форму 2 кнопки и 2 ListBox'a
в код формы пиши:

Option Explicit
Dim prArray() As PROCESSENTRY32, i As Long

Private Sub Command1_Click()
    Call KillProc(prArray(List1.ListIndex).th32ProcessID)
    DoEvents
    Call Command2_Click
End Sub

Private Sub Command2_Click()
    List1.Clear
    Call Form_Load
End Sub

Private Sub Form_Load()
    For i = 0 To GetProcess(prArray) - 1
        Call List1.AddItem(prArray(i).szExeFile)
    Next
End Sub

Private Sub List1_Click()
    Dim mArray() As MODULEENTRY32
    List2.Clear
    For i = 0 To GetProcessModule(mArray(), prArray(List1.ListIndex).th32ProcessID) - 1
        Call List2.AddItem(mArray(i).szModule)
    Next
End Sub


далее добавь к проекту модуль и впиши в него:

Option Explicit

'***************************************************************************************
'*                     Íàïèñàíî: 11.01.2002 (Team HomeWork)                            *
'*                           e-mail: sne_pro@mail.ru                                   *
'***************************************************************************************

Private Declare Function Process32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Module32First Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lpme As MODULEENTRY32) As Long
Private Declare Function Module32Next Lib "kernel32.dll" (ByVal hSnapshot As Long, ByRef lpme As MODULEENTRY32) 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 TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpExitCode As Long) As Long
Private Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function GetModuleFileNameEx Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" (ByVal hPass As Long) As Long

Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, ByRef NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, ByRef PreviousState As TOKEN_PRIVILEGES, ByRef ReturnLength As Long) As Long
Private Declare Function GetCurrentProcess Lib "kernel32.dll" () As Long
Private Declare Function GetLastError Lib "kernel32.dll" () As Long
Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, ByVal lpName As String, lpLuid As LUID) As Long
Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, ByRef TokenHandle As Long) As Long

Private Declare Function GetVersionEx Lib "kernel32.dll" Alias "GetVersionExA" (ByRef lpVersionInformation As OSVERSIONINFO) As Long
Private Type OSVERSIONINFO
    dwOSVersionInfoSize         As Long
    dwMajorVersion              As Long
    dwMinorVersion              As Long
    dwBuildNumber               As Long
    dwPlatformId                As Long
    szCSDVersion                As String * 128 ' Maintenance string for PSS usage
End Type

Public 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
Public Type MODULEENTRY32
    dwSize                      As Long
    th32ModuleID                As Long
    th32ProcessID               As Long
    GlblcntUsage                As Long
    ProccntUsage                As Long
    modBaseAddr                 As Long
    modBaseSize                 As Long
    hModule                     As Long
    szModule                    As String * 256
    szExePath                   As String * 260
End Type
Private Type LUID
    LowPart                     As Long
    HighPart                    As Long
End Type
Private Type TOKEN_PRIVILEGES
    PrivilegeCount              As Long
    TheLuid                     As LUID
    Attributes                  As Long
End Type

Private Const TOKEN_ADJUST_PRIVILEGES   As Long = &H20
Private Const TOKEN_QUERY               As Long = &H8
Private Const SE_PRIVILEGE_ENABLED      As Long = &H2
Private Const SE_DEBUG_NAME             As String = "SeDebugPrivilege"
Private Const VER_PLATFORM_WIN32_NT     As Long = 2

Public Function GetProcess(outData() As PROCESSENTRY32) As Long
    Dim hSnapshot As Long, uProcess As PROCESSENTRY32

    hSnapshot = CreateToolhelpSnapshot(&H2, 0)
    If hSnapshot = &HFFFF Then GetProcess = &HFFFF: Exit Function

    uProcess.dwSize = Len(uProcess)
    Call Process32First(hSnapshot, uProcess)
    
    Do
        ReDim Preserve outData(GetProcess)

        With uProcess
            .szExeFile = Spliting(.szExeFile, "\";)
            .szExeFile = Left(.szExeFile, InStr(vbNull, .szExeFile, vbNullChar) - vbNull)
        End With
        
        outData(GetProcess) = uProcess
        uProcess.szExeFile = String(260, &H0)
        GetProcess = GetProcess + vbNull

    Loop While (Process32Next(hSnapshot, uProcess))

    Call CloseHandle(hSnapshot)
End Function

Public Sub KillProc(ID As Long)
    Dim hProcess    As Long, _
        lExitCode   As Long

    Dim OSVER As OSVERSIONINFO

    OSVER.dwOSVersionInfoSize = Len(OSVER)
    Call GetVersionEx(OSVER)

    If OSVER.dwPlatformId = VER_PLATFORM_WIN32_NT Then _
        Call LoadPrivilege

    hProcess = OpenProcess(&H400 Or &H1, 0&, ID)
    Call GetExitCodeProcess(hProcess, lExitCode)
    Call TerminateProcess(hProcess, lExitCode)
    Call CloseHandle(hProcess)
End Sub

    'Ïîëó÷åíèå ïîñëåäíåãî ñòðîêè ìàññèâà
Private Function Spliting(inString As String, sDelimeter As String) As String
    Dim ub() As String
    If Len(inString) = 0 Then Exit Function
    ub = Split(inString, sDelimeter)
    Spliting = ub(UBound(ub))
End Function

    'Íó ýòî òàê, çà îäíî íàïèñàë... Ïîëó÷åíèå ñïèñêà èñïîëüçóåìûõ ìîäóëåé
Public Function GetProcessModule(ByRef lpMe32() As MODULEENTRY32, Optional ByVal dwPID As Long) As Long
    Dim hModuleSnap As Long, me32 As MODULEENTRY32

    hModuleSnap = CreateToolhelpSnapshot(&H8, dwPID)
    If hModuleSnap = -1 Then GetProcessModule = -1: Exit Function

    me32.dwSize = Len(me32)
    Call Module32First(hModuleSnap, me32)

    Do
        ReDim Preserve lpMe32(GetProcessModule)

        me32.szExePath = Left(me32.szExePath, InStr(1, me32.szExePath, vbNullChar) - 1)
        me32.szModule = Left(me32.szModule, InStr(1, me32.szModule, vbNullChar) - 1)
        lpMe32(GetProcessModule) = me32
        
        me32.szExePath = String(260, &H0): me32.szModule = String(256, &H0)
        GetProcessModule = GetProcessModule + 1
    Loop While (Module32Next(hModuleSnap, me32))

    Call CloseHandle(hModuleSnap)
End Function

Private Sub LoadPrivilege()
    On Error Resume Next

    Dim tkp               As TOKEN_PRIVILEGES
    Dim hToken            As Long
    Dim lbuffer           As Long
    Dim hProcessHandle    As Long
    Dim SEDebugNameValue  As LUID
    Dim tkpNewButIgnored  As TOKEN_PRIVILEGES

    hProcessHandle = GetCurrentProcess()

    Call OpenProcessToken(hProcessHandle, (TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY), hToken)
    Call LookupPrivilegeValue(vbNullString, SE_DEBUG_NAME, SEDebugNameValue)
 
    With tkp
        .PrivilegeCount = 1
        .TheLuid = SEDebugNameValue
        .Attributes = SE_PRIVILEGE_ENABLED
    End With
  
    Call AdjustTokenPrivileges(hToken, 0&, tkp, Len(tkp), tkpNewButIgnored, lbuffer)
End Sub


и будет тебе счасть, много много счастье ;)

Ответить

Номер ответа: 14
Автор ответа:
 -=J:M=-



ICQ: 361471 

Вопросов: 11
Ответов: 31
 Web-сайт: www.soft4free.net
 Профиль | | #14
Добавлено: 11.03.05 19:02
если ето проканает, и прога поедит покупателю, даш кошелек, кину тебе 10 :) спасибо!

Ответить

Номер ответа: 15
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #15 Добавлено: 12.03.05 21:59
Можно я врежусь к вам?
А может кто знает как защитить прогу от завершения процесса? Cancel=1 уже не канает. Или это в С++ сообщение можно перехватить.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам