Conectando con Outlook via OLE


© Copyrights 1997 by FoxPress, All rights reserved
FoxPress, Septiembre 1997

Puede ser que en algunos casos te interese mostrar el Microsoft Outlook desde Visual FoxPro para permitir a los usuarios leer o enviar mensjes o abrir carpetas dentro del Outlook, aquí tienes la forma de hacerlo.

El objeto Outlook te permite controlar los datos guardados en las carpetas del Outlook, pero es más difícil manipular el propio Outlook. Para tratar los datos almacenados en el Outlook, se necesitará crear una referencia a las carpetas del Messaging Application Programming Interface (MAPI) donde Outlook almacena toda su información. Para hacer esto acudimos a una variable del objeto "Namespace".

El siguiente código crea y muestra una instancia del Outlook. Visual FoxPro para la ejecución mientras el Outlook está on top usando la función del API GetActivewindow. Si la aplicación de Visual FoxPro se fuerza para ponerse on top, entonces el Outlook viene forzado a cerrarse:

oOutlookObj = CREATEOBJECT("Outlook.Application")
oNamespace =  oOutlookObj.GetNamespace("MAPI")
* ver al final para otros valores
oFolder = oNamespace.GetDefaultfolder(6)   
oFolder.Display
* Codigo para paralizar FoxPro mientras la ventana del Outlook esta activa y on top
IF NOT 'FOXTOOLS' $ SET('LIBRARY')
 SET LIBRARY TO SYS(2004)+"FoxTools"
ENDIF
FoxWind = MAINHWND()
   GetActive=RegFn('GetActiveWindow','','I') ** Determina si FoxPro está on top
DO WHILE .T.    
** Espera hasta que el ActiveWindow = FoxWind
IF FoxWind = CallFn(GetActive)
   EXIT
ENDIF
ENDDO
SET LIBRARY TO
oOutlookObj.Quit

El método GetDefaultfolder tiene varios valores que abren diferentes carpetas del Outlook. La lista que se muestra a continuación indica los valores de las carpetas por defecto.

   Nombre del Folder      Valor 	Nombre del Folder      Valor
   -----------------------------------	-----------------------------------
   Deleted Items		3	Calendar         	9
   Outbox			4	Contacts       		10
   Sent Items			5	Journal           	11
   Inbox 			6	Notes       		12