Страница: 1 | 2 |
Вопрос: Кто там шарит, напишите несколько строк!
Добавлено: 18.09.04 15:34
Автор вопроса: HACKER
Нужно короче процесс удалить, зная только его exe. Я неумею и приходится делать так: SHELL "taskkill /F /IM " + KillProc$ + " /T" Но есть одна проблема, бывает что деспетчер заблокирован, или на машине стоит что-то старее чем Win2000 и тогда нечего работать небудет. Нужна хорошая подпрограмка которой я бы давал имя процесса, а она убивала его.
Ответы
Всего ответов: 26
Номер ответа: 1
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #1
Добавлено: 18.09.04 18:57
Не пожалел времени, написал
--------------------
#Compile Exe "Test.exe"
#Include "Win32Api.inc"
#Include "TlHelp32.inc"
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) ' Äåáèëüíàÿ îñîáåííîñòü PowerBasic'a
For i = 0 To FillProcLst(arr())
If szPrcName = arr(i).szExeFile Then Call KillProcByPID(arr(i).th32ProcessID)
Next
End Sub
Function PBMain As Long
Call KillProcByName("taskmgr.exe"
End Function
Номер ответа: 2
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #2
Добавлено: 18.09.04 18:57
Мда... комментарии получились довольно интересным способом
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 18.09.04 19:16
УРА!!!!!!!!!! СПАСИБО!!!!!!!!!!
Номер ответа: 4
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #4
Добавлено: 06.10.04 00:33
2 sne
Комментарии типа "нажмите сюда чтобы просмотреть 10000 невидимых ххх картинок" )
Номер ответа: 5
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #5
Добавлено: 06.10.04 23:49
Нет, обычные комменты, только почему-то опосля копирования в браузер они выставились кодами... странно
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 17.10.04 22:05
Привет SNE! Вот опять твой код юрзаю, чо-то заглючило у меня, вообщем мне то не таскмен убить тип надо, а программу с переменной, ну типа:
Function PBMain As Long
Call KillProcByName(KillProc$)
End Function
и такая бяка выскакует:
Error 480 In .... Parametr mismatch, may need byCopy...
Странно, но когда всё точно такое же, но
FUNCTION PBMAIN AS LONG
CALL KillProcByName("taskmgr.exe"
END FUNCTION
тогда всё ок!
короче мне надо функции KillProcByName указать переменную.
Блин, сорри что через столько времени, ті наверное уже и забіл о чём єто я тут...
Номер ответа: 7
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #7
Добавлено: 18.10.04 02:08
Parametr mismatch - Несоответствие типа параметра.
Пора бы уже и знать что это такое.
Передавай туда переменную другого типа. Например ASCIIZ ))
Или измени ByRef на ByVal.
Номер ответа: 8
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #8
Добавлено: 18.10.04 18:05
Я знаю что это такое, я незнаю как это исправить. Я туда вообщето строковую переменную передаю, а нельзя там переписать типа...
Sub KillProcByName(ByRef szPrcName As STRING) ?
Номер ответа: 9
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #9
Добавлено: 18.10.04 19:27
Ну компилятор же тебя просит: хочу BYCOPY!!! Дай ты ему этот BYCOPY в конце концов, не BYREF а BYCOPY! Или измени входной параметр ф-ции, сделай его не BYREF, a BYVAL. Ммдя...
Номер ответа: 10
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #10
Добавлено: 19.10.04 00:35
cresta,
Ну что ты так убиваешся. Все когда то были ламерами. Попробовал бы ты с его знаниями полезть на Power Basic. Я бы на тебя тогда посмотрел. Представь что ты вдруг забыл ассемблер, устройство процессора, организацию памяти, двоичную и 16-ную системы счисления... И знаешь только как формы двигать и контролы подключать. Много ты на PB программ напишешь? Разве что только те что из хелпа. И то, шаг влево, шаг вправо - GPF или какая другая хрень.
Номер ответа: 11
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #11
Добавлено: 19.10.04 00:57
Не, ну открытым текстом компилер заговорил, даже на VB такого нет, чтобы говорил : хочу копию переменной, чего ж не прочесть сообщение в MsgBox'e и не перевести со словариком?
Номер ответа: 12
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #12
Добавлено: 19.10.04 02:29
cresta,
Компилер не выдержал. Нервный срыв у него случился раз он уже открытым текстом... Зачем же так жестоко.
HACKER,
Да, можно менять. Я вообще не могу понять зачем там ASCIIZ использовать. Разве что для скорости. А вообще этот тип строк для API предназначен.
Номер ответа: 13
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #13
Добавлено: 19.10.04 02:32
cresta,
А вообще он так ненавязчиво на всех ошибках с параметрами это предлагает. Типа фирменного блюда. Я на эту надпись просто внимания не обращаю.
Номер ответа: 14
Автор ответа:
cresta
Вопросов: 117
Ответов: 1538
Профиль | | #14
Добавлено: 19.10.04 03:15
Да когда я в первый раз увидел слово BYCOPY - меня чуть удар не хватил Что это за такое???Интереса ради сунул ему BYCOPY - он и заткнулся.
Номер ответа: 15
Автор ответа:
CyRax
Разработчик Offline Client
ICQ: 204447456
Вопросов: 180
Ответов: 4229
Web-сайт:
Профиль | | #15
Добавлено: 19.10.04 03:25
У тебя прямо какой то двоичный юбилей 111 вопросов и 1000 ответов.