Hola, a todos.
Soy nuevo en el foro. Cualquier consulta que hagan estoy dispuesto ayudar.
En este momento estoy desesperado, porque no consigo soluccionar mi problema. Espero me puedan ayudar.
.
Necesito recuperar el controlador de ventana de un programa a partir de de un Handle Window (hWnd).
Me explico cuando GetForegroundWindow recupere el Handle de una ventana necesito verificar si es el controlador de ventana lo que recupero. si no lo fuera, necesitaria utilizar una funcion para obtener el controlador de ventana con el handle de ventana que me dio GetForegroundWindow.
Para poner al frente mi ventana estoy usando ForceForegroundWindow, este funciona muy bien con casi todos los programas o juegos. El unico juego que me da problema es MapleStory (www.mapleglobal.com) simplemente no consigo robarle el foco.
Supongo que con GetForegroundWindow no estoy obteniendo el controlador de ventana, de MapleStory.
Quizas otro sea el problema... estoy abierto a cualquier comentario.
Me es muy importante que soluccione este problema, lo mas antes posible.
El codigo que adjunto es el que uso para traer al frente mi ventana.
Gracias de antemano tu amigo Paul.
Quizas se preguntaran que hace tu programa...
Estoy intentando crear un programa (cibercontrol) igual a Easycafe. Es por eso que necesito que mi ventana se ponga al frente. Si tienen otra soluccion pero que ponga al frente mi programa para bloquear la pc.
Cualquier comentario es bienvenido. pero comenten.
Porfavor que alguien me ayude pls.
****ESTE ES EL CODIGO QUE ESTOY USANDO****
Public Function ForceForegroundWindow(ByVal hWnd As Long) As Boolean
Dim ThreadID1 As Long
Dim ThreadID2 As Long
Dim nRet As Long
'
' Nothing to do if already in foreground.
'
If hWnd = GetForegroundWindow() Then
ForceForegroundWindow = True
Else
'
' First need to get the thread responsible for this window,
' and the thread for the foreground window.
'
ThreadID1 = GetWindowThreadProcessId(GetForegroundWindow, ByVal 0&)
ThreadID2 = GetWindowThreadProcessId(hWnd, ByVal 0&)
'
' By sharing input state, threads share their concept of
' the active window.
'
If ThreadID1 <> ThreadID2 Then
Call AttachThreadInput(ThreadID1, ThreadID2, True)
nRet = SetForegroundWindow(hWnd)
Call AttachThreadInput(ThreadID1, ThreadID2, False)
Else
nRet = SetForegroundWindow(hWnd)
End If
'
' Restore and repaint
'
If IsIconic(hWnd) Then
Call ShowWindow(hWnd, SW_RESTORE)
Else
Call ShowWindow(hWnd, SW_SHOW)
End If
'
' SetForegroundWindow return accurately reflects success.
'
ForceForegroundWindow = CBool(nRet)
End If
End Function
En el siguiente artículo de Karl Peterson se trató del tema:
http://vb.mvps.org/articles/ap199902.pdf