Client COM

Schéma général

Ce chapitre décrit les instructions à utiliser pour bénéficier de la technologie COM dans l'environnement Oxygène++. Ce chapitre est destiné aux développeurs connaissant déjà la technologie COM. Pour plus de précisions sur la technologie COM, consulter le chapitre 2.

Lorsque l'on souhaite faire appel à un serveur COM, la séquence de méthodes à appeler est la suivante :

 

CreerContexteComposantCom <code serveur>, <code contexte>

        Permet d'associer un serveur à un nom de contexte.

 

Connexion au serveur.

ConnecterComposantCom <code contexte>

Lance une instance du serveur et s'y connecte. Cette commande peut être remplacée par RattacherComposantCom si le serveur est déjà lancé.

 

RattacherComposantCom <code contexte>

        Essaie de se connecter à un serveur déjà lancé.

 

Invoquer une méthode

AppliquerMethodeComposantCom <code contexte>.<commande> (paramètres)

Exécute une méthode du serveur COM. La commande peut être constituée de plusieurs sous-commandes séparées par des points. Les paramètres sont ceux de la dernière sous-commande.

Peut être remplacée par AppliquerMethodeComposantComGet ou AppliquerMethodeComposantComSet

 

AppliquerMethodeComposantComGet <code contexte>.<commande> (paramètres)

Identique à AppliquerMethodeComposantCom sauf qu'elle permet d'obtenir une valeur depuis le serveur COM (lecture du contenu d'une variable ou résultat de l'appel d'une fonction).

 

AppliquerMethodeComposantComSet <code contexte>.<commande>(paramètres)

Identique à AppliquerMethodeComposantCom sauf qu'elle permet d'écrire une valeur dans une variable du serveur COM.

 

ValeurCom(<code contexte>, <constante du serveur>)

Cette méthode permet de connaître la valeur associée à une constante déclarée par le serveur. <constante du serveur> est une chaîne de caractères.

 

AppliquerMethodeComposantCom <code contexte>.“Quit“

        Cette méthode demande à un serveur de se décharger de la mémoire.

 

DeconnecterComposantCom <code contexte>

Permet de se déconnecter du serveur. Certains serveurs se déchargent de la mémoire sans avoir à appeler la méthode Quit.

 

Voici un exemple d'utilisation :

 

Cet exemple lance Microsoft Word, ici en version 8, ouvre un document puis insère deux lignes qui sont ensuite transformées en tableau. Ensuite, le style du tableau est modifié et le document est sauvé sur disque. Le client se déconnecte alors du serveur.

 

Methode "INSERTION_TABLEAU_SOUS_WORD"

        Declaration

                VARIABLES :

                            Chaine monFichier = "c:\doc\test_chaine.doc"

                            Chaine chaineAjoutee = "Chaine une"

                            Double monDouble = 1

                            Chaine monDocument = "MON_DOC"

                            Chaine chaineTab = ASCII(9)        // Une tabulation

                            Chaine chaineCR = ASCII(13)        // Un retour à la ligne

                            Entier monEntier

        FinDeclaration

 

        // Créer le contexte :

        CreerContexteCom "Word.Application"."MON_WORD"

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Lancer le serveur et s'y connecter :

        ConnecterComposantCom "MON_WORD"

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Rendre l'application visible :

        AppliquerMethodeComposantComSet "MON_WORD"."Visible"

        (monDouble)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Ajouter un nouveau document :

        AppliquerMethodeComposantCom "MON_WORD"."Documents.Add"

        (monDocument)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Insertion de la première ligne :

        // Insérer une chaîne de caractères :

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineAjoutee)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Insérer une tabulation :

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineTab)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Insérer le texte pour la deuxième colonne :

        chaineAjoutee = "10"

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineAjoutee)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Aller à la ligne :

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineCR)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // 2eme ligne

        // Insérer le texte pour la première colonne :

        chaineAjoutee = "Texte 2"

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineAjoutee)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Insérer une tabulation :

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineTab)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Insérer le texte pour la deuxième colonne :

        chaineAjoutee = "25"

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineAjoutee)

        Si ErreurRendue = 1 Alors Quitter FinSi

 

        // Insérer la fin de ligne :

        AppliquerMethodeComposantCom "MON_WORD"."Selection.InsertAfter"

        (chaineCR)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Transformation en tableau :

        AppliquerMethodeComposantCom "MON_WORD".

        "Selection.Range.ConvertToTable" (chaineTab)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Changer le type de tableau :

        monEntier = ValeurCom("MON_WORD", "wdTableFormatClassic1")

        AppliquerMethodeComposantCom "MON_WORD". "Selection.Tables(1).

        AutoFormat"(monEntier)

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

 

        // Sauver sur disque le document obtenu :

        AppliquerMethodeComposantCom "MON_DOC"."SaveAs"(monFichier)

        Si ErreurRendue = 1 Alors Quitter FinSi

        DeconnecterComposantCom "MON_WORD"

        Si ErreurRendue = 1 Alors QuitterMethode FinSi

        BoiteMessage "Procédure terminée…"

FinMethode

 

Voici le résultat obtenu :

Chaine UNE              10

Texte 2                       25

 

Pour trouver les informations sur les commandes de chaque serveur COM, consulter le chapitre « où trouver les informations nécessaires à l'utilisation d'un serveur COM »..