Страница: 1 |
Страница: 1 |
Вопрос: Путь к файлу процесса
Добавлено: 12.02.07 10:52
Автор вопроса: Makes
Использую такой код для определения пути к файлу. Он не подходит, т.к. может определить только имя самого файла без пути. Как быть?
Dim pe As PROCESSENTRY32, hSS&, LastItem&
pe.dwSize = LenB(pe)
hSS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
Process32First hSS, pe
Do
If InStr(pe.szExeFile, ".") <> 0 Then
If (Mid(pe.szExeFile, 1, InStr(pe.szExeFile, ".") - 1) = "proga") Then
List1.AddItem pe.szExeFile
End If
End If
DoEvents
Loop While Process32Next(hSS, pe)
Ответы
Всего ответов: 3
Номер ответа: 1
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #1
Добавлено: 12.02.07 17:16
Начал действовать по другому. Возникла другая проблема. Если запускать этот код в самом Вижале, то все нормально выполняется и в text1 выводится искомый путь. Если же запускаю откомпиленный файл, то прога просто завершается при нажатии на комманд1. В чем дело?
Dim pe As PROCESSENTRY32, hSS&, LastItem&
Dim cbNeeded As Long
Dim Modules As Long
Dim lRet As Long
Dim ModuleName As String
Dim nSize As Long
Dim hProcess As Long
Dim Path_Of_exe As String
pe.dwSize = LenB(pe)
hSS = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
Process32First hSS, pe
Path_Of_exe = ""
Do
If InStr(pe.szExeFile, "." <> 0 Then
If (Mid(pe.szExeFile, 1, InStr(pe.szExeFile, "." - 1) = "proga" Then
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION Or PROCESS_VM_READ, 0, pe.th32ProcessID) 'Open process for access.
If hProcess <> 0 Then
lRet = EnumProcessModules(hProcess, Modules, 200, cbNeeded) 'Enumerate it's loaded modules.
If lRet <> 0 Then
ModuleName = Space(260)
nSize = 500
lRet = GetModuleFileNameExA(hProcess, Modules, ModuleName, nSize) 'Get the EXE Path
Path_Of_exe = Left(ModuleName, lRet)
End If
End If
lRet = CloseHandle(hProcess) 'Close the open process handle.
End If
End If
DoEvents
Loop While Process32Next(hSS, pe)
Text1.Text = Path_Of_exe
End Sub
Номер ответа: 2
Автор ответа:
Fever
Вопросов: 60
Ответов: 808
Профиль | | #2
Добавлено: 13.02.07 18:32
Могу сказать что более глючный апи чем апи для процессов я не видел. Можешь посмотреть SPYWORKS FOR VB6 от DESAWARE INC. Пакет кажись платный, но в сети лежит без проблем в крякнутом виде. Там есть VBшные сорсы, одиниз них - полйчение списка процессов, списка DLL для процесса и еще чего-то. В общем поищи, не пожалеешь
Номер ответа: 3
Автор ответа:
Makes
Вопросов: 8
Ответов: 36
Профиль | | #3
Добавлено: 13.02.07 19:02
Спасибо. Я разобрался.