Autor
|
Tema: Averiguar proceso de un archivo. (Leído 6,715 veces)
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
En ese caso podes recurrir a Module32First (el primer modulo siempre es el ejecutable) y el campo szExePath de la estructura MODULEENTRY32. Sino tambien GetModuleFileNameEx ...
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Freeze.
|
Disculpame, podrias aclararme bien como hacelo...? Espero que no sea una molestia
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Disculpame, podrias aclararme bien como hacelo...? Espero que no sea una molestia La primera forma es exactamente igual que Process* solo que mas simple, no necesitas enumerar todos los modulos, el que te interesa es el primero. Para la segunda necesitas abrir un HANDLE al proceso (OpenProcess) y despues pasarle a GetModuleFileNameEx ese handle como primer parametro, cero como segundo, un puntero a cadena como tercero y el tamaño de la misma como cuarto y ultimo. Hace muchos años que no programo en VB asi que te doy una descripcion teorica, para la primera forma te podes guiar con el codigo que esta arriba, sigue la misma logica.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Si usas Module32First no necesitas ningun HANDLE.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Freeze.
|
Encontre este codigo, pero no me da la ruta completa: Private Type MODULEENTRY32 dwSize As Long th32ModuleID As Long th32ProcessID As Long GlblcntUsage As Long ProccntUsage As Long modBaseAddr As Long modBaseSize As Long hModule As Long szModule As String * 256 szExePath As String * 260 End Type Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long Private Declare Function CreateToolhelp32Snapshot Lib "kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long Private Declare Function Module32First Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long Private Declare Function Module32Next Lib "kernel32" (ByVal hSnapshot As Long, uProcess As MODULEENTRY32) As Long Private Sub Form_Load() Dim uProcess As MODULEENTRY32 Form1.AutoRedraw = True lProcessID = GetCurrentProcessId hSnapshot = CreateToolhelp32Snapshot(8, 0) uProcess.dwSize = Len(uProcess) n = Module32First(hSnapshot, uProcess) Do While n Form1.Print Left(uProcess.szModule, InStr(uProcess.szModule, Chr(0)) - 1) n = Module32Next(hSnapshot, uProcess) Loop End Sub
|
|
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
Usa szExePath no szModule.
|
|
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
Freeze.
|
Gracias.
I love You..! xD
|
|
|
En línea
|
|
|
|
HaDeS, -
WarZone Master
Desconectado
Mensajes: 284
|
Editado: Este es mi Código:: Private Declare Function EnumProcesses Lib "psapi.dll" (ByRef lpidProcess As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccessas As Long, ByVal bInheritHandle As Long, ByVal dwProcId As Long) As Long Private Declare Function GetModuleFileNameExA Lib "psapi.dll" (ByVal hProcess As Long, ByVal hModule As Long, ByVal ModuleName As String, ByVal nSize As Long) As Long Private Declare Function EnumProcessModules Lib "psapi.dll" (ByVal hProcess As Long, ByRef lphModule As Long, ByVal cb As Long, ByRef cbNeeded As Long) As Long Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal Handle As Long) As Long Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long Private Sub Command1_Click() Dim Procesos() As Long, cb&, cb2&, cbNeeded&, Ret&, Proceso&, Modulos(1 To 200) As Long, Elementos&, NombrePath$ cb = 16 cbNeeded = 96 Do While cb <= cbNeeded cb = cb * 2 ReDim Procesos(cb / 4) EnumProcesses Procesos(1), cb, cbNeeded Loop Elementos = cbNeeded / 4 For i = 1 To Elementos Proceso = OpenProcess(1024 Or 16, 0, Procesos(i)) If Proceso <> 0 Then Ret = EnumProcessModules(Proceso, Modulos(1), 200, cb2) If Ret <> 0 Then NombrePath = Space(260) GetModuleFileNameExA Proceso, Modulos(1), NombrePath, 500 If Procesos(i) <> GetCurrentProcessId Then NombrePath = Replace(Replace(NombrePath, "\systemroot\", "c:\windows\", , , vbTextCompare), "\??\", "") Text1.Text = Text1.Text & vbCrLf & NombrePath Text1.Text = Text1.Text & " - " & Procesos(i) End If End If End If CloseHandle Proceso Next End Sub
Saludos! Editado: Para que el código te quede bien funcional, minimamente tenes que usar las apis, EnumProcess, OpenProcess, EnumProcessModules y GetModuleFileNameExA, porque si quitas por ejemplo EnumProcessModules, en el text1.text algunas lineas quedarían vacias y el resultado sería pésimo.
|
|
« Última modificación: 27 Octubre 2007, 23:10 pm por HaDeS, - »
|
En línea
|
|
|
|
Eternal Idol
Kernel coder
Colaborador
Desconectado
Mensajes: 5.966
Israel nunca torturó niños, ni lo volverá a hacer.
|
De nada ►Freeze, para la segunda forma no necesitas usar mas que OpenProcess y GetModuleFileNameEx con 0 como el segundo parametro, ya que como indica la documentacion:
hModule [in] Handle to the module. If this parameter is NULL, GetModuleFileNameEx returns the path of the executable file of the process specified in hProcess.
Por cierto si necesitas trabajar con servicios habilita el privilegio SE_DEBUG_NAME primero.
|
|
« Última modificación: 28 Octubre 2007, 00:58 am por Eternal Idol »
|
En línea
|
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste. Juan Domingo Perón
|
|
|
|
|