Ejecutar exe externo y que quede delante de todo lo que este abierto?

Foro público de Xailer en español
Responder
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Ejecutar exe externo y que quede delante de todo lo que este abierto?

Mensaje por Carlos Ortiz »

Estoy llamando a un ejecutable externo y no siempre queda delante de todas las ventanas que el usuario puede llegar a tener abiertas, la llamada es la siguiente
ShellExecute( 0, "open", "ActualizaVersion.exe", "dbfarma", "", SW_SHOWNORMAL )

Muchas gracias
Avatar de Usuario
XeviCOMAS
Mensajes: 586
Registrado: Sab Mar 12, 2011 8:16 pm

Re: Ejecutar exe externo y que quede delante de todo lo que este abierto?

Mensaje por XeviCOMAS »

Carlos... lo mismo que me ocurría en mi post,
viewtopic.php?t=14169

que por cierto, ninguna respuesta por el foro...

Para solucionarlo, busqué una funcioncilla (creo que de Bingen) para buscar las tareas y poner a esa ventana como activa.

Código: Seleccionar todo

...
aTasks := ActiveTasks()
If (n := AScan( aTasks, {|x| x[2] = "título de la ventana a traer delante" } )) > 0
   ShowWindow( aTasks[n,1], SW_MAXIMIZE )
EndIf
...

//------------------------------------------------------------------------------

#define  GHW_HWNDFIRST 0
#define  GHW_HWNDNEXT  2
#define  GWW_HINSTANCE -6

Function ActiveTasks( nH )
   Local hWnd   := If( nH = Nil, GetWindow( GetActiveWindow(), GHW_HWNDFIRST ), nH )
   Local nTask:=0, cTask, aTasks:={}
   Local nHandle

    while hWnd != 0
      cTask = GetWindowText( hWnd )
      If ! Empty(cTask)
*        If AScan( aTasks, {|x| x[2] == cTask } ) == 0
            Aadd(aTasks,{hWnd,cTask})
*        EndIf
      EndIf
      hWnd = GetWindow( hWnd, GHW_HWNDNEXT )
    end

Return aTasks
Un Saludo,
Xevi.
Avatar de Usuario
Carlos Ortiz
Mensajes: 872
Registrado: Mié Jul 01, 2009 5:44 pm
Ubicación: Argentina - Córdoba
Contactar:

Re: Ejecutar exe externo y que quede delante de todo lo que este abierto?

Mensaje por Carlos Ortiz »

Gracias lo probaré ;)
Avatar de Usuario
bingen
Mensajes: 565
Registrado: Lun Jul 07, 2014 8:17 pm
Ubicación: Bilbao
Contactar:

Re: Ejecutar exe externo y que quede delante de todo lo que este abierto?

Mensaje por bingen »

Otra manera es utilizar una de las joyitas escondidas de Windows PowerToys llamada allways_on_top

https://docs.microsoft.com/en-us/window ... ays-on-top
BiSoft Desarrollo de software profesional
http://www.bisoft.es
Responder