Страница: 1 |
Страница: 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-сайт:
Профиль | | #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-сайт:
Профиль | | #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-сайт:
Профиль | | #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-сайт:
Профиль | | #10
Добавлено: 16.08.05 11:02
Да мне бы саму прогу... Кодить некогда, сейчас занят новой версией сайта... Пригодилась бы, есть триальные проги, но нету кряка
Номер ответа: 11
Автор ответа:
someone
Вопросов: 215
Ответов: 1596
Web-сайт:
Профиль | | #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 мин. (с обдумыванием, писаниной, и тестингом) а так пару сек...