Страница: 1 | 2 |
Вопрос: Как завершыть процесс (любой)
Добавлено: 09.03.05 15:48
Автор вопроса: -=J:M=- | Web-сайт:
Как с Бейсика можно убить процесс какой нить. спасибо...
Ответы
Всего ответов: 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-сайт:
Профиль | | #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-сайт:
Профиль | | #5
Добавлено: 10.03.05 15:38
AdjustTokenPrivileges - почему ето самое главное? там одной функцией не обойдется???
Номер ответа: 6
Автор ответа:
-=J:M=-
ICQ: 361471
Вопросов: 11
Ответов: 31
Web-сайт:
Профиль | | #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'ом
Номер ответа: 9
Автор ответа:
-=J:M=-
ICQ: 361471
Вопросов: 11
Ответов: 31
Web-сайт:
Профиль | | #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)
 O
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)
 IM 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-сайт:
Профиль | | #11
Добавлено: 10.03.05 22:49
че то у меня етот пример не канает, ошыбок очень много...
Номер ответа: 12
Автор ответа:
-=J:M=-
ICQ: 361471
Вопросов: 11
Ответов: 31
Web-сайт:
Профиль | | #12
Добавлено: 10.03.05 23:05
как можно узнать ID процесса? поскольку KillProcByPID ошыбок не вызывает
Номер ответа: 13
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #13
Добавлено: 11.03.05 02:16
Ну я-то без проблемм, помогу:
кинь на форму 2 кнопки и 2 ListBox'a
в код формы пиши:
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
далее добавь к проекту модуль и впиши в него:
'***************************************************************************************
'* Íàïèñàíî: 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-сайт:
Профиль | | #14
Добавлено: 11.03.05 19:02
если ето проканает, и прога поедит покупателю, даш кошелек, кину тебе 10 спасибо!
Номер ответа: 15
Автор ответа:
Дмитрий Щапов
Вопросов: 71
Ответов: 321
Профиль | | #15
Добавлено: 12.03.05 21:59
Можно я врежусь к вам?
А может кто знает как защитить прогу от завершения процесса? Cancel=1 уже не канает. Или это в С++ сообщение можно перехватить.