Autor
|
Tema: Ayuda hWnd (Leído 2,608 veces)
|
Maik33
Desconectado
Mensajes: 128
|
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
Mensajes: 3.158
I'Love...!¡.
|
Private Declare Function GetActiveWindow Lib "user32" () As Long ' // Ventana Actual. ' // Buscar por titulo de ventana u otra caracteristica!¡. Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long 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
Dulce Infierno Lunar!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
xkiz ™
|
Private Declare Function GetForegroundWindow Lib "user32" () As Long
|
|
|
En línea
|
|
|
|
Maik33
Desconectado
Mensajes: 128
|
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
Mensajes: 128
|
Ahora si no se que pasa. Tengo esto: 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 Const WM_KEYDOWN As Long = &H100 Dim h As Long Private Sub Command1_Click() h = FindWindow(vbNullString, "a - Bloc de notas") Timer1.Interval = 1000 End Sub Private Sub Timer1_Timer() SendMessage h, WM_KEYDOWN, vbKeyA, 0& End Sub
Pero en el block de notas no sale la "a" Alguna idea?
|
|
|
En línea
|
|
|
|
Dessa
Desconectado
Mensajes: 624
|
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
Mensajes: 128
|
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
|
|
|
|
|
|