Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 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-сайт: hw.t-k.ru
 Профиль | | #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)

    ;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) ' Äåáèëüíàÿ îñîáåííîñòü 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-сайт: hw.t-k.ru
 Профиль | | #2
Добавлено: 18.09.04 18:57
Мда... комментарии получились довольно интересным способом ;)

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #3 Добавлено: 18.09.04 19:16
УРА!!!!!!!!!! СПАСИБО!!!!!!!!!!

Ответить

Номер ответа: 4
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #4
Добавлено: 06.10.04 00:33
2 sne
Комментарии типа "нажмите сюда чтобы просмотреть 10000 невидимых ххх картинок" :))

Ответить

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



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

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #12
Добавлено: 19.10.04 02:29
cresta,
 Компилер не выдержал. Нервный срыв у него случился раз он уже открытым текстом... Зачем же так жестоко. :)

HACKER,
 Да, можно менять. Я вообще не могу понять зачем там ASCIIZ использовать. Разве что для скорости. А вообще этот тип строк для API предназначен.

Ответить

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



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

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #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-сайт: basicproduction.nm.ru
 Профиль | | #15
Добавлено: 19.10.04 03:25
У тебя прямо какой то двоичный юбилей :) 111 вопросов и 1000 ответов.

Ответить

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

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



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