ShellExecute (abre ventana en segundo plano - ayuda)

ShellExecute (abre ventana en segundo plano - ayuda)

Postby jfafive » Sat Jul 19, 2008 4:57 pm

Hola a todos,

Estoy usando

Code: Select all  Expand view  RUN
ShellExecute(0,"open",cFile,,,1 )


Pero al abrir el documento word, me deja la ventana de word aierta en segundo plano, es decir, detras del programa.

Curiosamente, si abro un .txt (invoca al bloc de notas de windows) y este, sí que me lo muestra en primer plano. Pero cuando se trata de un documento word o excel, éste queda detras.

¿hay alguna forma de hacer que muestre el documento delante de la pantalla del programa?
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby csincuir » Sun Jul 20, 2008 4:21 pm

Favi, prueba haciendolo de esta forma:

Code: Select all  Expand view  RUN
Local oWS
oWS = Createobject("WScript.Shell")
oWS:Run(cFile,0,"False" )


Saludos.

Carlos.
csincuir
 
Posts: 409
Joined: Sat Feb 03, 2007 6:36 am
Location: Guatemala

Postby jfafive » Mon Jul 21, 2008 9:37 am

Hola Carlos,

Parece que tu método, solo funciona bien cuando se trata de Word.
En el caso de Excell, me genera un error y en el caso del bloc de notas, no lo invoca.

No se cual puede ser la causa. ¿tal vez alguno de los parametros que se usan en el metodo oWS:Run( ... ), aunque ignoro para qué sirven.

:(
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby Antonio Linares » Mon Jul 21, 2008 11:01 am

Javier,

Una vez lo abras con ShellExecute(), tendrias que encontrar el handle
de la ventana con FindWindow() y teniendo el handle probar con varias
opciones como SetFocus(), BringWindowToTop(), ó SetForegroundWindow()
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby jfafive » Mon Jul 21, 2008 11:28 am

Gracias Antonio,

Parece que la solución ha funcionado de la siguiente forma:

Code: Select all  Expand view  RUN
ShellExecute(0,"open",cFile,0,0,9 )
SetForeGroundWindow( FindWindow() )
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby Antonio Linares » Mon Jul 21, 2008 11:50 am

Javier,

No le has pasado ningún parámetro a FindWindow() ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby jfafive » Tue Jul 22, 2008 10:59 am

Pues no,

Entonces ha funcionado de chiripa!

¿puedes facilitarme algún ejemplo?
¿como se cual es el handle de la ventana que se abre con shellexecute?
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella

Postby Antonio Linares » Tue Jul 22, 2008 11:53 am

Javier,

Puedes localizar el handle de la ventana asi:

hWnd := FindWindow( 0, "Titulo_de_la_ventana" )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42161
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby jfafive » Tue Jul 22, 2008 11:59 am

Gracias Antonio,

;-)
jfafive
 
Posts: 396
Joined: Tue Mar 18, 2008 9:41 pm
Location: Marbella


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests