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

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda hWnd
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda hWnd  (Leído 2,608 veces)
Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Ayuda hWnd
« en: 21 Junio 2010, 11:03 am »

Hola,
Para saber el handle de una ventana se puede hacer mediante el titulo o la clase segun he encontrado en internet, pero hay alguna otra manera de saberlo? Por ejemplo por la ventana activa?
Gracias.


En línea

BlackZeroX
Wiki

Desconectado Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: Ayuda hWnd
« Respuesta #1 en: 21 Junio 2010, 18:22 pm »


Código
  1.  
  2. Private Declare Function GetActiveWindow Lib "user32" () As Long '   //  Ventana Actual.
  3. '   //  Buscar por titulo de ventana u otra caracteristica!¡.
  4. Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  5. Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long
  6.  
  7.  

Dulce Infierno Lunar!¡.


En línea

The Dark Shadow is my passion.
xkiz ™


Desconectado Desconectado

Mensajes: 1.252


Ver Perfil WWW
Re: Ayuda hWnd
« Respuesta #2 en: 21 Junio 2010, 19:03 pm »

Código
  1. Private Declare Function GetForegroundWindow Lib "user32" () As Long
  2.  
En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Ayuda hWnd
« Respuesta #3 en: 21 Junio 2010, 19:05 pm »

Gracias por responder,
Esque mira te comento lo que quiero hacer:
Hay un juego que te mueves por el teclado(tipico), pero si yo uso el keybd_event no las manda, pero cuando me sale un cuadro de texto para escribir, si funciona.
Entonces se me ha ocurrido hacer on SendMessage, por eso necesito el hWnd, y es posible que el hWnd que necesite no sea el de la ventana activa, sino de una ventana oculta.
En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Ayuda hWnd
« Respuesta #4 en: 21 Junio 2010, 20:50 pm »

Hola otra vez,
He encontrado un ejemplo, muy bueno, y he descubierto que si hay una ventana oculta, ahora ya obtube el handle de esa ventana pero cuando hago sendmessage, sige sin funcionar. Alguna idea?
Gracias.

La pagina es:
http://www.recursosvisualbasic.com.ar/htm/listado-api/111-listar-ventana-de-window.htm
En línea

Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Ayuda hWnd
« Respuesta #5 en: 22 Junio 2010, 11:27 am »

Ahora si no se que pasa.

Tengo esto:
Código
  1. Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
  2. Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
  3.  
  4. Private Const WM_KEYDOWN As Long = &H100
  5.  
  6. Dim h As Long
  7.  
  8. Private Sub Command1_Click()
  9.    h = FindWindow(vbNullString, "a - Bloc de notas")
  10.    Timer1.Interval = 1000
  11. End Sub
  12.  
  13. Private Sub Timer1_Timer()
  14.    SendMessage h, WM_KEYDOWN, vbKeyA, 0&
  15. End Sub
  16.  

Pero en el block de notas no sale la "a"  :huh:

Alguna idea?
En línea

Dessa


Desconectado Desconectado

Mensajes: 624



Ver Perfil
Re: Ayuda hWnd
« Respuesta #6 en: 22 Junio 2010, 12:13 pm »

Código:

Option Explicit

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

'Private Const WM_KEYDOWN As Long = &H100
 
Dim h As Long
 
Private Sub Command1_Click()
     Shell ("notepad"), vbNormalFocus
     h = FindWindow("notepad", vbNullString)
     h = FindWindowEx(h, 0, "Edit", vbNullString)
 
   Timer1.Interval = 100
End Sub
 

Private Sub Timer1_Timer()
  Call SendMessage(h, &H102, vbKeyA, 0&)
End Sub
 


 


EDIT:

 Private Sub Timer1_Timer()
  If h <> 0 Then Call SendMessage(h, &H102, vbKeyA, 0&)
End Sub








« Última modificación: 22 Junio 2010, 12:30 pm por Dessa » En línea

Adrian Desanti
Maik33

Desconectado Desconectado

Mensajes: 128


Ver Perfil
Re: Ayuda hWnd
« Respuesta #7 en: 22 Junio 2010, 12:28 pm »

Funciona!!! Gracias Dessa.
Un par de cosillas, el &H102 a que corresponde? como &H100 es KEYDOWN, el otro?
La otra cosa es que lo del block de notas era para hacer una prueba, yo lo que quiero es hacer lo mismo pero para un juego, y no se me ocurre nada.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda como desabilitar siertas teclas en un hwnd « 1 2 »
Programación Visual Basic
abdiel2475 10 4,412 Último mensaje 14 Enero 2011, 01:50 am
por abdiel2475
Urgente Ayuda - saber el nombre, pid, hwnd de un exe en java
Java
Schetz 0 1,913 Último mensaje 23 Marzo 2012, 04:19 am
por Schetz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines