elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  como hallar el Exe al que pertenece la ventana ???
0 Usuarios y 2 Visitantes están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: como hallar el Exe al que pertenece la ventana ???  (Leído 6,191 veces)
<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
como hallar el Exe al que pertenece la ventana ???
« en: 26 Diciembre 2008, 16:10 pm »

hola                                               :¬¬

  quería pedirles si alguien puede mostear o introducirme en algún método para poder identificar a que archivo pertenece una ventana especifica.

  y si se puede teniendo el handle de un botón obtener el de su contenedor



desde ya!...                    ...muchas gracias.


« Última modificación: 28 Diciembre 2008, 05:32 am por <[(x)]> » En línea

<[(x)]>
Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: como allar el archivo al que pertenece la ventana???
« Respuesta #1 en: 26 Diciembre 2008, 16:52 pm »

'Recupera el Handle de la ventana padre de una ventana o control
Private Declare Function GetParent Lib "user32" (ByVal Hwnd As Long) As Long


« Última modificación: 26 Diciembre 2008, 16:54 pm por Dessa » En línea

Adrian Desanti
<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
;)
« Respuesta #2 en: 26 Diciembre 2008, 17:34 pm »

gracias ya averiguo sobre esa api

y sobre saber q archivo contiene el código que la llamo?
En línea

<[(x)]>
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: como allar el archivo al que pertenece la ventana???
« Respuesta #3 en: 26 Diciembre 2008, 20:58 pm »

No entendi muy bien la pregunta del 'archivo' :-X

Pero creo que es esto lo que quieres:

1ero: Obtener el Hwnd de la ventana. (FindWindow,GetParent...)
2ndo: Obtenemos el Proceso el cual es dueño de esa ventana. (GetWindowThreadProcessId)
3ero: Obtenemos la ruta del ejecutable que es ese proceso. (OpenProcess y GetModuleFileNameEx)

Espero haberte ayudado ;D

Feliz Navidad :D
En línea

<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: como allar el archivo al que pertenece la ventana???
« Respuesta #4 en: 26 Diciembre 2008, 22:45 pm »

si  ;D es exactamente lo que necesitaba.

gracias a los dos.
En línea

<[(x)]>
Karcrack


Desconectado Desconectado

Mensajes: 2.416


Se siente observado ¬¬'


Ver Perfil
Re: como allar el archivo al que pertenece la ventana???
« Respuesta #5 en: 27 Diciembre 2008, 00:39 am »

si  ;D es exactamente lo que necesitaba.

gracias a los dos.
De nada, para eso estamos ;)

Saludos ;D
En línea

<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
ultima
« Respuesta #6 en: 27 Diciembre 2008, 03:34 am »

hola

aka les dejo lo q logre hacer fijen se si no tiene algún choclo y si se puede mejorar graciass.

Module1.bas

Código:
Option Explicit

'<lapis
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 dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function GetClassName Lib "user32" Alias "GetClassNameA" (ByVal hwnd As Long, ByVal lpClassName As String, ByVal nMaxCount As Long) As Long
Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
'lapis>

'<constantes
Private Const PROCESS_VM_READ As Long = (&H10)
Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Private Const SW_SHOWNORMAL = 1
Private Const WM_CLOSE = &H10
'Private Const gcClassnameMSWord = "OpusApp"
'Private Const gcClassnameMSExcel = "XLMAIN"
'Private Const gcClassnameMSIExplorer = "IEFrame"
'Private Const gcClassnameMSVBasic = "wndclass_desked_gsk"
'Private Const gcClassnameNotePad = "Notepad"
'Private Const gcClassnameMyVBApp = "ThunderForm"
'Private Const gcClassnameFolder = CabinetWClass 'De explorer.exe
'constantes>

'procedimiento >>
Public Sub GetPathProces(Optional ClassName As String = vbNullString, Optional WindowsName As String = vbNullString)
   On Error GoTo eler
   
   Dim WinWnd As Long, ret As String, lpClassName As String
   Dim Buffer As String
   Dim i_Procesos As Long
   Dim Array_Procesos() As Long, RetVal As Long
   Dim sd As Long
   Dim ret1 As Long
   Dim Ruta As String
   Dim t_cbNeeded As Long
   Dim Handle_Proceso As Long
   Dim i As Long
   
   ReDim Array_Procesos(250) As Long
   
   ' Recoje el handle de la ventana
   WinWnd = FindWindow(vbNullString, ret)
   
   If WinWnd = 0 Then MsgBox "Couldn't find the window ...": Exit Sub
   lpClassName = Space(256)
   RetVal = GetClassName(WinWnd, lpClassName, 256)
   MsgBox "Classname: " + Left$(lpClassName, RetVal)
   ' Carga la variable sd con la id del proceso
   GetWindowThreadProcessId WinWnd, sd
   
   ' Obtiene un array con los id de los procesos
   ret = EnumProcesses(Array_Procesos(1), 1000, t_cbNeeded): i_Procesos = t_cbNeeded / 4
   
   ' Recorre todos los procesos
   For i = 1 To i_Procesos
   
    If Array_Procesos(i) = sd Then
     ' Lo abre y devuelve el handle
     Handle_Proceso = OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, 0, Array_Procesos(i))
       
     If Handle_Proceso <> 0 Then
      ' Crea un buffer para almacenar el nombre y ruta
      Buffer = Space(255)
      ' Le pasa el Buffer al Api y el Handle
      ret1 = GetModuleFileNameExA(Handle_Proceso, 0, Buffer, 255)
      ' Le elimina los espacios nulos a la cadena devuelta
      Ruta = Left(Buffer, ret1)
           
     End If
       
     ' Cierra el proceso abierto
     ret1 = CloseHandle(Handle_Proceso)
     ' Muestra la ruta del proceso y ee id
     MsgBox Ruta & "     " & Array_Procesos(i), vbInformation, "info"
             
    Exit For
     
   End If
     
   DoEvents
           
  Next
   
Exit Sub
eler:
MsgBox Err.Description, vbCritical, "Esto no tendria q haber pasado."

End Sub

Sub main()
GetPathProces , InputBox("Escriba el titulo de una ventana.", "prueva uno", "ej: Mi Pc", (Screen.Width / 2) - 2500, (Screen.Height / 2) - 1500)
End Sub




un 90(0 d3 (091 94573 n0 l3 h483 m4l 4 n4d13
« Última modificación: 27 Diciembre 2008, 03:36 am por <[(x)]> » En línea

<[(x)]>
Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: como allar el archivo al que pertenece la ventana???
« Respuesta #7 en: 28 Diciembre 2008, 01:33 am »

Otra Opcion:

Código:

Option Explicit

Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long

'Abre un proceso para poder obtener el path ( Retorna el handle )
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
'Obtiene el nombre del proceso a partir de un handle
Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long
' Cierra y libera el proceso abierto con OpenProcess
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long

Private Const PROCESS_VM_READ As Long = (&H10)
Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)

Function ProcIDFromWnd(ByVal hwnd As Long) As Long

Dim idProc As Long:
'crea PID de un HWnd
GetWindowThreadProcessId hwnd, idProc
'retorno del PID
ProcIDFromWnd = idProc

End Function

Private Sub Command1_Click()

Shell "calc"

Dim Handle_Proceso As Long: Dim Buffer As String
Dim ret As Long: Dim Ruta As String

Dim Handle As Long: Handle = FindWindow("SciCalc", vbNullString)
'MsgBox ProcIDFromWnd(Handle)
Handle_Proceso = OpenProcess(PROCESS_QUERY_INFORMATION + PROCESS_VM_READ, 0, ProcIDFromWnd(Handle))
If Handle_Proceso <> 0 Then
  Buffer = Space(255) ' Crea un buffer para almacenar el nombre y ruta
  ret = GetModuleFileNameExA(Handle_Proceso, 0, Buffer, 255)    ' Le pasa el Buffer al Api y el Handle
  Ruta = Left(Buffer, ret)   ' Le elimina los espacios nulos a la cadena devuelta
End If

ret = CloseHandle(Handle_Proceso) 'Cierra el proceso abierto

MsgBox Ruta 'Muestra la ruta del proceso

'cierro la calculadora
Call SendMessage(FindWindow("SciCalc", vbNullString), &H112, &HF060&, 0)
End

End Sub


Saludos
En línea

Adrian Desanti
Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: como allar el archivo al que pertenece la ventana???
« Respuesta #8 en: 28 Diciembre 2008, 03:57 am »

Por coordenadas del mouse:

Código:

Option Explicit
Private Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwprocessid As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
'Obtiene el nombre del proceso a partir de un handle
Private Declare Function GetModuleFileNameExA Lib "PSAPI.DLL" (ByVal hProcess As Long, ByVal hModule As Long, ByVal lpFilename As String, ByVal nSize As Long) As Long
Private Declare Function CloseHandle Lib "kernel32.dll" (ByVal hObject As Long) As Long
Private Const PROCESS_VM_READ As Long = (&H10)
Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)

'Obtiene el Handle de una ventana a partir de una coordenada
Private Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Long, ByVal yPoint As Long) As Long
'Recupera la coordenada del cursor
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Private Type POINTAPI
  x As Long
  y As Long
End Type
Function ProcIDFromWnd(ByVal hwnd As Long) As Long

Dim idProc As Long
GetWindowThreadProcessId hwnd, idProc 'crea ID de un proceso desde un HWnd
ProcIDFromWnd = idProc 'retorno de la ID  de un proceso

End Function

Private Sub Form_Load()

Timer1.Interval = 100

End Sub

Private Sub Timer1_Timer()

Dim retorno As Long
Dim Handle As Long
Dim Cor As POINTAPI

'Obtiene la coordenada del Mouse
retorno = GetCursorPos(Cor)
'Recuperamos el HWND de la ventana asociada a esa coordenada
Handle = WindowFromPoint(Cor.x, Cor.y)

Dim Handle_Proceso As Long: Handle_Proceso = OpenProcess(&H400 + &H10, 0, ProcIDFromWnd(Handle))

If Handle_Proceso <> 0 Then
Dim Buffer As String: Buffer = Space(255) ' Crea un buffer para almacenar el nombre y ruta
Dim ret As Long: ret = GetModuleFileNameExA(Handle_Proceso, 0, Buffer, 255) ' pasa el Buffer al Api y el Handle
Dim Ruta As String: Ruta = Left(Buffer, ret) ' Le elimina los espacios nulos a la cadena devuelta
End If

ret = CloseHandle(Handle_Proceso) 'Cierra el proceso abierto

Me.Cls: Me.Print Ruta 'Muestra la ruta del proceso

End Sub


Saludos
En línea

Adrian Desanti
<[(x)]>

Desconectado Desconectado

Mensajes: 215



Ver Perfil
Re: como allar el archivo al que pertenece la ventana???
« Respuesta #9 en: 28 Diciembre 2008, 04:17 am »

Por coordenadas del mouse:

Código:

Option...
... Sub


Saludos

muy bueno  jeje estaba pensando en hacerlo pero no se no me puse jeje..

« Última modificación: 28 Diciembre 2008, 04:33 am por <[(x)]> » En línea

<[(x)]>
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
McAfee ya pertenece a Intel
Noticias
wolfbcn 2 2,581 Último mensaje 2 Marzo 2011, 23:50 pm
por B€T€B€
Cómo comprobar si nuestra IP pertenece a una resolución de DNS abierto
Noticias
wolfbcn 1 2,067 Último mensaje 12 Enero 2014, 07:24 am
por Di~OsK
¿Cómo hallar una Permutacion ordenada con MergeSort?
Programación C/C++
_TTFH_3500 1 1,591 Último mensaje 11 Octubre 2018, 05:15 am
por CalgaryCorpus
¿Por que España no pertenece al G-20? « 1 2 »
Foro Libre
Aguijon_zerO 11 4,065 Último mensaje 30 Junio 2019, 03:57 am
por El_Andaluz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines