ForceFore: Obtener controlador de ventana

Iniciado por vbasicred, 11 Junio 2006, 21:07 PM

0 Miembros y 1 Visitante están viendo este tema.

vbasicred

Hola, a todos.
Soy nuevo en el foro. Cualquier consulta que hagan estoy dispuesto ayudar.
:huh: 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