Страница: 1 |
Страница: 1 |
Вопрос: как узнать полный путь к екзефайлу процесса?
Добавлено: 18.09.06 18:17
Автор вопроса: Leha
Мне известен ID процесса, как узнать полный путь к исполняемому файлу?
Ответы
Всего ответов: 12
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 18.09.06 19:35
в поиск...
Номер ответа: 2
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #2
Добавлено: 18.09.06 19:39
мла ну лана, сквозь влом и через лень, просто фарт что код под рукой был
Public Function GetAllModuleFromHandle(hwnd As Long, arr() As String)
'Получение сведений о загруженных модулях процесса из хэндла окна
Dim threadID As Long, processID As Long, hSnapshot As Long
Dim uProcess As PROCESSENTRY32, rProcessFound As Long
Dim i As Integer, szExename As String
threadID = GetWindowThreadProcessId(hwnd, processID)
If threadID = 0 Or processID = 0 Then Exit Function
hSnapshot = CreateToolhelpSnapshot(TH32CS_SNAPPROCESS, 0&
If hSnapshot = -1 Then Exit Function
uProcess.dwSize = Len(uProcess)
rProcessFound = ProcessFirst(hSnapshot, uProcess)
Do While rProcessFound
If uProcess.th32ProcessID = processID Then 'Нашли PID процесса
Call GetAllModule(processID, arr()) 'Вызвали функцию возвращающую инфо по PID
i = InStr(1, uProcess.szexeFile, Chr(0))
If i > 0 Then szExename = uProcess.szexeFile
Exit Do
Else
rProcessFound = ProcessNext(hSnapshot, uProcess)
End If
Loop
Call CloseHandle(hSnapshot)
GetExeFromHandle = szExename
End Function
Private Sub GetAllModule(pID As Long, arr() As String)
'Возвращает информацию о загруженных модулях в определённом процессе
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
ReDim arr(0)
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 GetModuleFileNameExA(hProcess, mID(i), mName, MAX_PATH)
arr(i) = Trim(mName)
ReDim Preserve arr(UBound(arr) + 1)
'кроме "*.exe" файла здесь будет найдено много всяких "*.dll", "*.ocx"
'и возможно еще что ни - будь, скорее всего, путь к файлу, запустившему процесс
'будет получен при i = 0
Next i
arr(UBound(arr)) = "PID окна процесса: " & pID
End If
End If
Call CloseHandle(hProcess)
End Sub
API сам, и так подвиг...
Номер ответа: 3
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #3
Добавлено: 18.09.06 19:44
hProcessSnap= CreateToolhelp32Snapshot (H32CS_SNAPPROCESS, YourProcessID)
Process32First (hProcessSnap, pe)
Где pe =
TYPE PROCESSENTRY32
dwSize AS DWORD
cntUsage AS DWORD
th32ProcessID AS DWORD
th32DefaultHeapID AS DWORD
th32ModuleID AS DWORD
cntThreads AS DWORD
th32ParentProcessID AS DWORD
pcPriClassBase AS LONG
dwFlags AS DWORD
szExeFile AS ASCIIZ * %MAX_PATH
END TYPE
т.е. pe.szExeFile = Имя файла из которого был запущен просесс.
Best regards,
Номер ответа: 4
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #4
Добавлено: 18.09.06 20:00
А мне вся инфа нужна была о процессе поэтому я ещё EnumProcessModules...
Кстати ненашёл H32CS_SNAPPROCESS...
Номер ответа: 5
Автор ответа:
JMP
Вопросов: 6
Ответов: 171
Профиль | | #5
Добавлено: 18.09.06 22:42
%TH32CS_SNAPHEAPLIST = &H00000001
%TH32CS_SNAPPROCESS = &H00000002
%TH32CS_SNAPTHREAD = &H00000004
%TH32CS_SNAPMODULE = &H00000008
%TH32CS_SNAPMODULE32 = &H00000010
%TH32CS_SNAPALL = %TH32CS_SNAPHEAPLIST _
OR %TH32CS_SNAPPROCESS _
OR %TH32CS_SNAPTHREAD _
OR %TH32CS_SNAPMODULE
%TH32CS_INHERIT = &H80000000???
Номер ответа: 6
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #6
Добавлено: 19.09.06 01:17
пасиб
Номер ответа: 7
Автор ответа:
Leha
Вопросов: 37
Ответов: 68
Профиль | | #7
Добавлено: 19.09.06 13:11
Мне всегда нравилось что когда задаешь вопрос на форуме, тебя посылают в поиск. Тогда зачем вообще этот форум нужен?
Но всетаки спасибо
Номер ответа: 8
Автор ответа:
[root]
Вопросов: 45
Ответов: 1212
Web-сайт:
Профиль | | #8
Добавлено: 19.09.06 13:24
Зачем, зачем ...
Вот когда допустим(к примеру) 1 мая создали тему, обсудили и выяснили как реализовать нужный момент, дружно про нее забыли.
2 мая тема поднимается снова, но человеком который не видел тему созданную 1го мая.
Потом тот же вопрос задается 3 и 4 мая.
Ты захочешь разговаривать с человеком который 5го мая поднимет снова этот вопрос?
А некоторым приходят все сообщения с форума на почту, как ты думаешь интересно читать одно и тоже.
Вот то то и оно, так что алгоритм:
- подумал сам
- подумал еще пару часиков
- поискал на винте
- еще раз поискал на винте
- зашел на VBNet в раздел примеры
- зашел в раздел библиотека кодов
- воспользовался поиском на форуме
- если не работает поиск, ищешь через гугл, но на сайте, как это уже обсуждалось
- ты ни чего не нашел, создаешь тему, ура тебе ответили
Номер ответа: 9
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #9
Добавлено: 19.09.06 15:02
Как правило лучше сразу поискать ответ на свой вопрос в документацииЭ т.е.:
- Попробовал вспомнить ответ
- Выполнил поиск в докумнетации
А затем уже лезть по всяким форумам и интернетам...
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 19.09.06 15:14
Тогда зачем вообще этот форум нужен?
Чтоб тебя послали в поиск
Номер ответа: 11
Автор ответа:
sne
Разработчик Offline Client
ICQ: 233286456
Вопросов: 34
Ответов: 5445
Web-сайт:
Профиль | | #11
Добавлено: 19.09.06 20:37
1. Если бы еще поиск работал.
2. Программист не тот кто знает все, программист тот кто умеет пользоваться докуменртацией.
Номер ответа: 12
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #12
Добавлено: 19.09.06 23:15
Ну так радуйся, что посылают только в поиск А то бывает вопросы тут такие, которые обычно на других форумах тупо сносятся, или перекидываются в оффтоп и закрываются к обсуждению, но увы... увы... это не у нас...