FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Lista global de direcciones de OutLook
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Lista global de direcciones de OutLook
Posted: Fri Oct 01, 2010 10:21 AM
Quisiera capturar la Lista global de direcciones de OutLook de un servidor de correo (Microsoft Exchange).
Los campos serian: nombre, apellidos, dirección de correo, telefono, etc...
Y así poderlos pasar a un DBF.
Gracias.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Lista global de direcciones de OutLook
Posted: Mon Oct 04, 2010 07:06 PM

¡¡¡ Socorrrroooooo !!! :cry: :cry: :cry:

Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 990
Joined: Wed Oct 19, 2005 02:17 PM
Re: Lista global de direcciones de OutLook
Posted: Mon Oct 04, 2010 07:46 PM
Jose María,

has probado con WMI y Exchange: http://msdn.microsoft.com/en-us/library/aa142577%28EXCHG.65%29.aspx

Mañana por la mañana hago una prueba en el currelo y te digo algo.

Saludos,

Félix
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Lista global de direcciones de OutLook
Posted: Mon Oct 04, 2010 10:02 PM
Yo pensaba que se haría con algo como:

Code (fw): Select all Collapse
#define olFolderContacts 10
function main()
LOCAL i
LOCAL oOutlook := CREATEOBJECT( "Outlook.Application" )
LOCAL oNameSpace := oOutlook:GetNameSpace("MAPI")
LOCAL oContacts := oNameSpace:GetDefaultFolder( olFolderContacts )
FOR i = 1 TO oContacts:Items:Count
   msginfo(oContacts:Items[ i ]:FullName+CRLF+;
           oContacts:Items[ i ]:BusinessAddressStreet+CRLF+;
           oContacts:Items[ i ]:BusinessAddressPostalCode+CRLF+;
           oContacts:Items[ i ]:BusinessAddressCity+CRLF+;
           oContacts:Items[ i ]:BusinessAddressState+CRLF+;
           oContacts:Items[ i ]:BusinessAddressCountry+CRLF+;
           oContacts:Items[ i ]:BusinessTelephoneNumber+CRLF+;
           oContacts:Items[ i ]:HomeTelephoneNumber+CRLF+;
           oContacts:Items[ i ]:BusinessFaxNumber+CRLF+;
           oContacts:Items[ i ]:WebPage+CRLF+;
           oContacts:Items[ i ]:Email1Address+CRLF)
NEXT
oOutlook:Quit()
return nil
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 990
Joined: Wed Oct 19, 2005 02:17 PM
Re: Lista global de direcciones de OutLook
Posted: Tue Oct 05, 2010 06:10 AM
Buenos días Jose María,

descarga el programa WMI Explorer de http://www.ks-soft.net/hostmon.eng/wmi/index.htm e investiga con tu Exchange y tu servidor de Directorio Activo (LDAP).

Ejemplo:

Code (fw): Select all Collapse
FUNCTION Connect()
    
    oLoc := CheckWMI ()
    IF oLoc = nil
       ? "WMI no instalado"
       RETURN (nil)
    ENDIF 
    
    objWMI := oLoc:ConnectServer( "Servidor", "Root\MicrosoftExchangeV2", "usuario", "contraseña" )  //Conexión sobre un servidor remoto
    //objWMI := oLoc:ConnectServer()  // Conexión local
    oQuery := objWMI:ExecQuery( "SELECT * FROM Exchange_Mailbox" ) // Consulta sobre el buzón
    
    
RETURN NIL

FUNCTION CheckWMI ()

  LOCAL oErr
 
  TRY
    oLoc := CreateObject( "wbemScripting.SwbemLocator" )  // Creamos el objeto WMI
  CATCH oErr
    oLoc := NIL
  END

RETURN oLoc


Si necesitas algo más, ya sabes donde encontrarnos...

Saludos,

Félix
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Lista global de direcciones de OutLook
Posted: Tue Oct 05, 2010 09:24 PM
Gracias Baxajaun

Comienzo a estudiar un poco esto del WMI (Windows Management Instrumentation) :-)
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 07:42 AM
Esta línea:
Code (fw): Select all Collapse
objWMI := oLoc:ConnectServer( "Servidor", "Root\MicrosoftExchangeV2", "usuario", "contraseña" )
me da este error:
Code (fw): Select all Collapse
   Error description: Error wbemScripting.SwbemLocator/3  DISP_E_MEMBERNOTFOUND: CONNECTSERVER
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 990
Joined: Wed Oct 19, 2005 02:17 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 08:05 AM
Jose Maria,

te pongo el ejemplo de una aplicación que tengo para controlar el estado de un servicio de Windows:

Code (fw): Select all Collapse
*-------------------------------------------------------------------------------------*
* Descripción : ViSeTe - Visualizador del servicio Tebis                              *
* Fecha       : 30/09/2009                                                            *
* Prog.       : Felix Pablo Grande Ramos                                              *
* Utiliza la maravillosa FWH 9.06 (c) FivetechSoft - Antonio Linares Cañas 1993-2009  *
*                                                                                                                            *
* Antonio, muchas gracias por tu ayuda y soporte. Muchas gracias también a los amigos  *
* de los foros de FiveTech, de los que he usado ideas y pequeñas porciones de código. *
*                                                                                     *
* Muchas gracias a todos !!!                                                          *
*                                                                                     *
* Antonio Linares Cañas - FivetechSoft http://www.fivetechsoft.com                    *
*-------------------------------------------------------------------------------------*

#include 'FiveWin.ch'
#include "DSay.ch"


// Variables para controlar que la aplicación sólo se ejecuta una vez 
 
#define GW_CHILD      5
#define GW_HWNDNEXT   2
#define SW_RESTORE    9 


REQUEST HB_LANG_ES

// Declaración de variables

STATIC oBrush
STATIC oIcon
STATIC oSay, oSayState
STATIC oFont
STATIC FntArial, FntTahoma
STATIC oTimer
STATIC oDlg
STATIC oService, objWMI, oLoc, oDatos
STATIC cEstado
   
FUNCTION Main()
  
   SET _3DLOOK ON
   SET CENTURY ON
   SET EPOCH TO 1960
   SET DATE BRITISH
   SET DELETE  ON
   
   HB_LANGSELECT("ES")
 
   hb_gcAll()  // Recolector de basura de Harbour
   
   // Si la aplicación está corriendo y la volvemos a ejecutar, se llama a la aplicación que está corriendo
    
   IF IsExeRunning( cFileName( HB_ARGV( 0 ) ) ) 
      ShowApplication() 
   ELSE

      DEFINE FONT oFont NAME "Arial" SIZE 0,-11
      DEFINE FONT FntArial NAME "ARIAL"  SIZE 0,15 BOLD
      DEFINE FONT FntTahoma NAME "TAHOMA"  SIZE 0,16 ITALIC
      
      DEFINE ICON oIcon RESOURCE "TEBIS"    
      
      DEFINE DIALOG oDlg RESOURCE "ViSeTe" TITLE "Visualizador Servicio TEBIS" FONT oFont ICON oIcon
    
      /*Logotipo del programa*/

      REDEFINE BITMAP ;
        ID 90 OF oDlg;
        NAME "LOGO";
        ADJUST

      REDEFINE BITMAP ;
        ID 92 OF oDlg;
        NAME "TEBIS";
        ADJUST

      REDEFINE DYNAMIC SAY oSay ;
        PROMPT CRLF+CRLF+CRLF+;
                         "ViSeTe 1.0   "+CRLF+CRLF+;
             "Programa desarrollado por:  "+CRLF+;
             "Félix Pablo Grande Ramos"+CRLF+;
                                      CRLF+;
             "Julio 2009 © Matrici S. Coop. "+CRLF+;
             "I+D+i"+CRLF+CRLF+"Visualizador de Servicios TEBIS"+CRLF+CRLF;
             ID 91 OF oDlg;
      CENTERED  ;
      FONT FntTahoma ;
      COLOR CLR_BLACK ; 
      VERTICAL SCROLL SPEED 40 WRAP
      
      REDEFINE BUTTON ;
        ID 93 of oDlg ;
        ACTION Stop()
        
      REDEFINE BUTTON ;
        ID 94 of oDlg ;
        ACTION Start()
        
      REDEFINE BUTTON ;
        ID 95 of oDlg ;
        ACTION ReStart()
    
      REDEFINE SAY oSayState TRANSPARENT ;
        PROMPT "Estado :" ;
        ID 97 ;
        FONT FntTahoma ;
        UPDATE
     
      REDEFINE SAY oSay TRANSPARENT;
        PROMPT "         " ;
        ID 98 ;    
        COLOR "CLR_GREEN" ;  
        UPDATE  
        
               
      ACTIVATE DIALOG oDlg CENTER RESIZE16 ON INIT ( oDlg:lHelpIcon := .f., Status() , TimerOn(oDlg)) ;
      VALID MsgYesNo ( " Estas seguro de querer salir ?", " ¡¡¡ Atención !!!" ) 
      
      oTimer:end()
      
        RELEASE FONT oFont, FntArial, FntTahoma
   
   ENDIF
      
RETURN NIL  


FUNCTION ShowApplication() 

   LOCAL hWnd := FindWnd( "ViSeTe" ) //Buscamos la ventana con el nombre "ViSeTe"
    
   IF hWnd != nil 
      IF isIconic( hWnd )
         showWindow( hWnd, SW_RESTORE )
      ENDIF
      SetForeGroundWindow( hWnd )
   ENDIF    
    
RETURN NIL    

FUNCTION FindWnd( cTitle ) 

   LOCAL hWnd := GetWindow( GetDesktopWindow(), GW_CHILD ) 

   WHILE hWnd != 0 
      IF Upper( cTitle ) $ Upper( GetWindowText( hWnd ) ) 
         RETURN hWnd 
      ENDIF 

      hWnd = GetWindow( hWnd, GW_HWNDNEXT ) 
   END 

RETURN NIL

FUNCTION Connect()
    
    oLoc := CheckWMI ()
    IF oLoc = nil
       ? "WMI no instalado"
       RETURN (nil)
    ENDIF 
    
    objWMI := oLoc:ConnectServer( "Servidor", "root\cimv2", "usuario", "contraseña" )  //Conexión sobre un servidor remoto
    //objWMI := oLoc:ConnectServer()  // Conexión local
    oService := objWMI:ExecQuery( "SELECT State FROM Win32_Service where Name='TebisFLD'" ) // Aquí podéis poner el servicio que queráis controlar
    
    
RETURN NIL

FUNCTION Status()

  hb_gcAll()  // Recolector de basura de Harbour
  
  Connect()

  // Obtenemos el estado del servicio
  FOR Each oDatos In oService
        
        cEstado := ALLTRIM(cValToChar(oDatos:State)) 
        
        IF cEstado == "Running" 
           oSay:SetText( "          " )
           oSay:SetColor( CLR_BLACK,CLR_GREEN )
        ELSE  
           oSay:SetText( "          " )
           oSay:SetColor( CLR_BLACK,CLR_RED )
        ENDIF    
    
    NEXT
  
 RETURN NIL
 
 FUNCTION Stop()
 
 Connect()
// Obtenemos el estado del servicio
  FOR Each oDatos In oService

        cEstado := ALLTRIM(cValToChar(oDatos:State)) 
        
        IF cEstado == "Running" 
        
           oDatos:StopService()  // Paramos el servicio
                       
        ENDIF    
    
    NEXT
 
 RETURN NIL
 
 FUNCTION Start()
 
 Connect()
// Obtenemos el estado del servicio
  FOR Each oDatos In oService

        cEstado := ALLTRIM(cValToChar(oDatos:State)) 
        
        IF cEstado == "Stopped" 
        
           oDatos:StartService()  // Arrancamos el servicio
                       
        ENDIF    
    
    NEXT
 
 RETURN NIL
 
 FUNCTION ReStart()
 
 Connect()
// Obtenemos el estado del servicio
  FOR Each oDatos In oService

        cEstado := ALLTRIM(cValToChar(oDatos:State)) 
        
        IF cEstado == "Running" 
        
           oDatos:StopService() // Paramos el servicio
           Status()
           Sleep(10)
           oDatos:StartService() // Arrancamos el servicio
                       
        ELSE     
    
           oDatos:StartService() // Arrancamos el servicio
           
        ENDIF    
    
    NEXT
 
 RETURN NIL

FUNCTION CheckWMI ()

  LOCAL oErr
 
  TRY
    oLoc := CreateObject( "wbemScripting.SwbemLocator" )  // Creamos el objeto WMI
  CATCH oErr
    oLoc := NIL
  END

RETURN oLoc

FUNCTION TimerOn(oDlg)

  DEFINE TIMER oTimer of oDlg INTERVAL 5000 ACTION Status()
   
  ACTIVATE TIMER oTimer
 
RETURN NIL


Tienes mi correo ? Enviame un privado y lo intentamos, ok ?

Saludos,

Félix
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 09:10 AM
JmGarcia wrote:Esta línea:
Code (fw): Select all Collapse
objWMI := oLoc:ConnectServer( "Servidor", "Root\MicrosoftExchangeV2", "usuario", "contraseña" )
me da este error:
Code (fw): Select all Collapse
   Error description: Error wbemScripting.SwbemLocator/3  DISP_E_MEMBERNOTFOUND: CONNECTSERVER
Sin embargo con conexion local NO da error
Code (fw): Select all Collapse
objWMI := oLoc:ConnectServer()  // Conexión local



Baxajaun, tu ejemplo me funciona bien por que es conexión local, luego el problema lo tengo yo en los parámetros de la conexión sobre un servidor remoto (creo :-) )
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 990
Joined: Wed Oct 19, 2005 02:17 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 09:22 AM

Jose María,

has puesto los datos correctamente del servidor, usuario y contraseña ? Lo has intentado con el WMI Explorer ?

Saludos,

Félix

Posts: 990
Joined: Wed Oct 19, 2005 02:17 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 09:24 AM

Jose Maria,

yo lo estoy utilizando sobre un servidor remoto.

Saludos,

Félix

Posts: 990
Joined: Wed Oct 19, 2005 02:17 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 10:42 AM

Jose Maria,

a que dirección de correo te puedo escribir ?

Saludos,

Felix

Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 10:43 AM
Baxajaun wrote:...Lo has intentado con el WMI Explorer ?
Si, lo he intentado.
Action -> Connect to host/namespace...

Tengo dudas en el campo "Auth. level" no se que escoger: Default, None, Connect, Call, Packet, Packet Integrity o Packet Privacy.

Con todas me da "Error: Acceso denegado"
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 654
Joined: Mon May 29, 2006 03:14 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 10:45 AM
Baxajaun wrote:a que dirección de correo te puedo escribir ?

j m g a r c i a m ARROBA h o t m a i l PUNTO c o m
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.

FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Posts: 990
Joined: Wed Oct 19, 2005 02:17 PM
Re: Lista global de direcciones de OutLook
Posted: Wed Oct 06, 2010 11:15 AM

Jose María,

yo utilizo :

usuario : DOMINIO\Administrador

clave: Clave del administrador

Auth. level: Default

Saludos,

Félix