18 de octubre de 2015

Ventana de Word y Excel en primer plano

Si necesitamos poner una ventana de Microsoft Excel en primer plano mediante Automation podemos utilizar el siguiente código VFP:

lcXls = GETFILE("XLS")
IF NOT EMPTY(lcXls) AND FILE(lcXls)
  loExcel = CREATEOBJECT("Excel.Application")
  loExcel.Workbooks.OPEN(lcXls)
  loExcel.VISIBLE = .T.
  DECLARE LONG BringWindowToTop IN "user32" LONG HWND
  BringWindowToTop(loExcel.HWND)
ELSE
  MESSAGEBOX("El archivo " + lcXls + " no existe", 0+16, "Aviso")
ENDIF

Para el caso de Microsoft Word que no tiene la propiedad hWnd (window handle -identificador de ventana-), primeramente debemos buscar ese handle:

lcDoc = GETFILE("Doc")
IF NOT EMPTY(lcDoc) AND FILE(lcDoc)
  loWord = CREATEOBJECT("Word.Application")
  loWord.Documents.OPEN(lcDoc)
  loWord.VISIBLE = .T.
  lcCaption = loWord.ActiveDocument.ActiveWindow.Caption + [ - Microsoft Word]
 DECLARE integer FindWindow IN "user32" String, String
  lnHWnd = FindWindow(Null , lcCaption)
  DECLARE LONG BringWindowToTop IN "user32" LONG HWND
  BringWindowToTop(lnHWND)
ELSE
  MESSAGEBOX("El archivo " + lcDoc + " no existe", 0+16, "Aviso")
ENDIF

Luis Maria Guayan

No hay comentarios. :

Publicar un comentario