Lograr que una aplicación tome el foco

Mellileo
04 de Enero del 2006
Hola Genios:

He estado quemando las pestañas tratando de encontrar la manera de que a traves de VB se le pueda entregar el foco a una aplicación distinta.

Me explico:

He creado una aplicación que manipula información de una BD de Access, dentro de lo que debe manejar, son unos informes que ya estan creados en Access y algunos de ellos son parametrizados (Se les debe digitar un valor por pantalla para que muestre los registros respectivos), para poderlos visualizar en VB sin que se abra Access he creado una rutina que manipula el Snap View y funciona muy bien con informes Genéricos (No parametrizados), pero cuando trato de ejecutar un reporte parametrizado, se abre el cuadro de diálogo que pide el parámetro, pero no toma el foco, lo que provoca que quede debajo de las ventanas de las aplicaciones abiertas, teniendo que presionar las teclas ALT+TAB para poder que tome el foco.

No se si me entiendan, pero lo que necesito es que esa ventanita tome el foco cuando se ejecuta el informe.

Cualquier ayuda será inmensamente agradecida!!

Saludos,

Mellileo !!!

CSDK
04 de Enero del 2006
'EN UN MODULO CUALQUIERA************************************
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Declare Function GetParent Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function GetWindowThreadProcessId Lib "user32" (ByVal hwnd As Long, lpdwProcessId As Long) As Long
Public Declare Function GetWindow Lib "user32" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As Long, ByVal lpWindowName As Long) As Long
Public Declare Function Putfocus Lib "user32" Alias "SetFocus" (ByVal hwnd As Long) As Long
Public Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long
Public Declare Function GetDesktopWindow Lib "user32" () As Long
Public mWnd As Long

Public Const GW_HWNDNEXT = 2




'EN DONDE SE LLAMAN LAS APLICACIONES****************************************

Dim Pid As Long
LockWindowUpdate GetDesktopWindow
Pid = Shell(App.Path & "CalcCURP.exe", vbNormalFocus)
If Pid = 0 Then MsgBox "Error Iniciando la Aplicación"
mWnd = InstanceToWnd(Pid)
SetParent mWnd, Me.hwnd
Putfocus mWnd
LockWindowUpdate False