Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

Страница: 1 |

 

  Вопрос: Процессы Добавлено: 13.08.05 13:57  

Автор вопроса:  Yeputons | ICQ: 278444762 
Как получить полный список всех процессов (как в "диспетчере задач" Windows XP)? Т.е. что бы знать путь к программе, имя её файла и самое главное - код процесса (что бы можно было её насильно закрыть).

Ответить

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

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #1 Добавлено: 13.08.05 16:21
Про получения списка процессов примеров полно! Единственное НО, у меня не получалось получить путь к файлу процесса, а только его exe имя. Получить код процесса тоже не составляет труда, стоит внимательно посмотреть какой-то исходник...


Public proc As PROCESSENTRY32, Snap As Long

Public Declare Function CreateToolhelpSnapshot Lib "kernel32" Alias "CreateToolhelp32Snapshot" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Public Declare Function ProcessFirst Lib "kernel32" Alias "Process32First" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function ProcessNext Lib "kernel32" Alias "Process32Next" (ByVal hSnapshot As Long, uProcess As PROCESSENTRY32) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As Long, ByVal uExitCode As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)

Public Const TH32CS_SNAPPROCESS = &H2, TH32CS_SNAPheaplist = &H1, TH32CS_SNAPthread = &H4, TH32CS_SNAPmodule = &H8, TH32CS_SNAPall = TH32CS_SNAPPROCESS + TH32CS_SNAPheaplist + TH32CS_SNAPthread + TH32CS_SNAPmodule, MAX_PATH As Integer = 260

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 * MAX_PATH
End Type

Dim mass() As Long
Dim NP() As String

Public Sub KillProc(ArryProsess$())
'Убивает все процессы которые даны в массиве
ReDim mass(0)
ReDim NP(0)

On Error Resume Next
    Snap = CreateToolhelpSnapshot(TH32CS_SNAPall, 0)
    proc.dwSize = Len(proc)
    TheLoop = ProcessFirst(Snap, proc)
    Index = 0
    While TheLoop <> 0
        NP$(Index) = Replace(proc.szexeFile, Right(proc.szexeFile, 1), "";)
        mass(Index) = proc.th32ProcessID
        Index = Index + 1
        ReDim Preserve NP(Index)
        ReDim Preserve mass(Index)
        TheLoop = ProcessNext(Snap, proc)
    Wend
    CloseHandle Snap

For i% = 0 To UBound(ArryProsess$)
Kick$ = ArryProsess$(i%)

For q% = 0 To Index
    
    If LCase(Left(Spliting(NP$(q%), "\";), Len(Kick$))) = LCase(Kick$) Then
        openproc = OpenProcess(1, 0, mass(q%))
        term = TerminateProcess(openproc, -9)
    End If
Next q%
Next i%

End Sub



mass(Index) = proc.th32ProcessID '<<< !!!


вот здесь в массив заносится код процесса

Ответить

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


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #2
Добавлено: 14.08.05 00:24
Путь к файлу получают через Module32Firtst-Module32Next

Ответить

Номер ответа: 3
Автор ответа:
 Mihalыch



ICQ: 373-509-101 

Вопросов: 56
Ответов: 330
 Профиль | | #3 Добавлено: 14.08.05 07:00
Так вроде получалось найти путь к файлу запустившему процесс


Public Sub GetAllModule(pID As Long)
    Dim i As Long
    Dim hProcess As Long
    Dim cb As Long
    Dim cbNeeded As Long
    Dim mID() As Long
    Dim nModules As Long
    Dim mName As String
    hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, pID)
    If hProcess <> 0 Then
       cb = 8
       cbNeeded = 96
       Do While cb <= cbNeeded
          cb = cb * 2
          ReDim mID(cb / 4)
          Call EnumProcessModules(hProcess, mID(1), cb, cbNeeded)
       Loop
       nModules = cbNeeded / 4
       If nModules > 0 Then
            mName = String(MAX_PATH, 0)
            For i = 0 To UBound(mID)
                Call GetModuleFileNameEx(hProcess, mID(i), mName, MAX_PATH)
                Form1.List1.AddItem Trim(mName)
                'кроме "*.exe" файла здесь будет найдено много всяких "*.dll", "*.ocx"
                'и возможно еще что ни - будь, скорее всего, путь к файлу, запустившему процесс
                'будет получен при i = 0
            Next i
       End If
    End If
    Call CloseHandle(hProcess)
End Sub

Ответить

Номер ответа: 4
Автор ответа:
 someone



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #4
Добавлено: 14.08.05 11:17
http://vbnet.ru/samples/download.aspx?id=707

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 14.08.05 15:17
2 Mihalыch, пасиб работает!

где-то вычитал что это токо в 2k, xp, etc...


В примере на который дал ссылку Empro, как и сказал Sharp для me/98 через Module32Firtst-Module32Next... Но мне негде протестеть, разобраться... Может у кого me/98 напишет функцию которая возращала бы путь по PID процесса?

Ответить

Номер ответа: 6
Автор ответа:
 Yeputons



ICQ: 278444762 

Вопросов: 71
Ответов: 179
 Профиль | | #6 Добавлено: 14.08.05 18:02
Спасибо, HACKER! Первый метод работает прекрасно, и имени файла мне оказалось достаточно.

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #7 Добавлено: 14.08.05 23:55
данезашо...

Ответить

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



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #8
Добавлено: 15.08.05 14:29
У меня был пример - закрывал окна определяя нужное окно по Caption - всякие там сообщения о триальности и тд.
Не знаете, где его можно найти (что нибудь подобное)?

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 15.08.05 15:47
Не сложно написать и самому, у меня есть модуль, я когда-то писал для себя, он умеет очень много с окнами делать... Найти определённый Caption окна по шаблону символов - одна ф-ция которая возвратит хендел, убить окно по хенделу - другая ф-ция, вообщем пару строк... Если тебе не "ради интереса" стучись в асю вышлю модуль.

Ответить

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



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #10
Добавлено: 16.08.05 11:02
Да мне бы саму прогу... Кодить некогда, сейчас занят новой версией сайта... Пригодилась бы, есть триальные проги, но нету кряка :(

Ответить

Номер ответа: 11
Автор ответа:
 someone



Вопросов: 215
Ответов: 1596
 Web-сайт: 123
 Профиль | | #11
Добавлено: 16.08.05 11:04
Да и вообще... Кряк там не поможет :(
Можно только после оплаты получить прогу уже поную, а это так... (Microangelo 98)

Ответить

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


 

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

Вопросов: 236
Ответов: 8362
 Профиль | | #12 Добавлено: 16.08.05 12:13
ок.

модуль + пример

http://vb.hut1.ru/hww.rar

К автообновлению списка привязать убивалку нежелаемых окон - 2 мин. (с обдумыванием, писаниной, и тестингом) а так пару сек... :)

Ответить

Страница: 1 |

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



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