Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
How to determine if Outlook object is available
Message
 
 
À
20/11/2002 10:39:17
Information générale
Forum:
Visual FoxPro
Catégorie:
COM/DCOM et OLE Automation
Divers
Thread ID:
00724768
Message ID:
00724828
Vues:
18
This message has been marked as the solution to the initial question of the thread.
>I am going to use the Outlook object to move mail to the deleted folder.
>
>However some of my clients will not have "Outlook Express" instead of Outlook so I will not be giving them this functionality, since I understand the Outlook object is not available in Outlook Express.
>
>I need to be able to detect if the full Outlook object is available for my code to use.
>How do I do this?
>
>
>Many Thanks
* CheckServer.PRG
* Published in _Microsoft Office Automation with Visual FoxPro_,
* Hentzenwerke Publishing, June, 2000.
* www.hentzenwerke.com
* lWordExists = CheckServer("Word.Application")
* Copyright 2000 by Tamar E. Granor and Della Martin All Rights Reserved

LPARAMETER cServerName
if vartype(cServerName)<>"C"
   cServerName = "Word.Application" && Default check for Word
endif   
LOCAL oRegistry, cClassID, cEXEName, lEXEExists, ;
      aClassIDValues, aClassIDValues, aServerNameValues

IF VERSION() >= "Visual FoxPro 06"
   oRegistry = NewObject("Registry", HOME() + "FFC\Registry")
ELSE
  SET PROCEDURE TO HOME() + "samples\classes\registry.prg" ADDITIVE
  oRegistry = CreateObject("Registry")
ENDIF

lEXEExists = .F.

DECLARE aClassIDValues[1], aServerNameValues[1]

WITH oRegistry
  * Find the CLSID of the server. First, look for
  * the Class's Key.
  IF .OpenKey(cServerName + "\CLSID") = 0
    * The Class's Key is open, now enumerate its values
    .EnumKeyValues(@aClassIDValues)

    * The data portion of the first (only) value returned
    * is the CLSID. Find the LocalServer32 key for the CLSID 
    IF .OpenKey("CLSID\" + aClassIDValues[1,2] + "\LocalServer32") = 0
      * Enumerate the LocalServer32 values
      .EnumKeyValues(@aServerNameValues)
 
      * The EXE file is stored in the first (only) data value returned. 
      cEXEName = aServerNameValues[2]

      * The value that's returned may have " -Automation" or " /Automation" or
      * " /AUTOMATION" & other trailing stuff at the end. Strip it off.
      IF "AUTO" $ UPPER(cEXEName)
        cEXEName = LEFT(cEXEName, ATC("AUTO", UPPER(cEXEName)) - 2)
      ENDIF

      * Verify that the file exists 
      lEXEExists = FILE(cEXEName) 
    ENDIF 
  ENDIF
ENDWITH

RETURN lEXEExists
If it's not broken, fix it until it is.


My Blog
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform