Вопрос: Как завершыть процесс (любой) | Добавлено: 09.03.05 15:48 |
Автор вопроса: ![]() |
Как с Бейсика можно убить процесс какой нить. спасибо... |
Ответы | Всего ответов: 18 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() Вечный Юзер! ICQ: uu@jabber.cz Вопросов: 120 Ответов: 3302 |
Профиль | Цитата | #1 | Добавлено: 09.03.05 15:51 |
TerminateProcess
TerminateThread P.S. А разве в факе у нас ещё этого нет? |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #2 | Добавлено: 09.03.05 21:08 |
& AdjustTokenPrivileges |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() 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 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 361471 Вопросов: 11 Ответов: 31 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 10.03.05 15:38 |
AdjustTokenPrivileges - почему ето самое главное? там одной функцией не обойдется??? |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 361471 Вопросов: 11 Ответов: 31 |
Web-сайт: Профиль | Цитата | #6 | Добавлено: 10.03.05 15:40 |
если не трудно, роскажыте поподробнее как и что надо для етогоб если я знаю токо название процесса! |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #7 | Добавлено: 10.03.05 15:50 |
sne! Помоги человеку с Adjust'ом
Одной — неа, я видал один такой пример("Access" ![]() ![]() |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 192496851 Вопросов: 75 Ответов: 3178 |
Профиль | Цитата | #8 | Добавлено: 10.03.05 15:54 |
sne! Помоги человеку с Adjust'ом
...там одной функцией не обойдется??? Одной — неа, я видал один такой пример("Access"![]() ![]() |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 361471 Вопросов: 11 Ответов: 31 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 10.03.05 21:00 |
если можно примером ![]() |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик 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) ![]() 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) ![]() 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 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 361471 Вопросов: 11 Ответов: 31 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 10.03.05 22:49 |
че то у меня етот пример не канает, ошыбок очень много... |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 361471 Вопросов: 11 Ответов: 31 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 10.03.05 23:05 |
как можно узнать ID процесса? поскольку KillProcByPID ошыбок не вызывает |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client ICQ: 233286456 Вопросов: 34 Ответов: 5445 |
Web-сайт: Профиль | Цитата | #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 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 361471 Вопросов: 11 Ответов: 31 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 11.03.05 19:02 |
если ето проканает, и прога поедит покупателю, даш кошелек, кину тебе 10 ![]() |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 71 Ответов: 321 |
Профиль | Цитата | #15 | Добавлено: 12.03.05 21:59 |
Можно я врежусь к вам?
А может кто знает как защитить прогу от завершения процесса? Cancel=1 уже не канает. Или это в С++ сообщение можно перехватить. |
|