PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Durée de vie d'un objet automation
  • Allocation d'un objet automation
  • Passage de paramètre à une méthode
  • Utilisation d'un objet OLE Automation depuis un service
  • Objets automation et WEBDEV
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadApple WatchUniversal Windows 10 AppWindows Mobile
Autres
Procédures stockées
Le mot-clé Automation permet de déclarer un objet automation. L'allocation de cet objet est directement effectuée lors de la déclaration. Les objets automation permettent par exemple de manipuler des logiciels tels que Office 2007 (Word, Excel, ...).
Remarque : Il est aussi possible d'utiliser un objet automation dynamique. Son allocation est effectuée à la demande, au cours du programme.
WEBDEV - Code Serveur L'utilisation du type Automation peut poser des problèmes dans un site. En Intranet, les objets automation sont utilisables avec précaution sur des cas ponctuels et rapides : les objets automation constituent une conception dangereuse et sont très déconseillés.
Exemple
// Déclaration d'un objet automation
MonObjetAutomation est un objet Automation MonServeur
// Appel d'une méthode d'un objet automation
MonObjetAutomation>>FichierOuvrir(NomDoc)
Syntaxe

Déclarer un objet automation Masquer les détails

<Nom de l'objet automation> est un objet automation <Nom du serveur automation>
<Nom de l'objet automation> : Chaîne de caractères (sans guillemets)
Nom de l'objet automation à déclarer.
<Nom du serveur automation> : Chaîne de caractères
Nom du serveur de l'objet automation.

Appeler une méthode d'un objet automation Masquer les détails

<Nom de l'objet automation>>><Nom de la méthode>([<Paramètres>])
<Nom de l'objet automation> : Chaîne de caractères (sans guillemets)
Nom de l'objet automation à manipuler. Cet objet a été préalablement déclaré.
<Nom de la méthode> : Chaîne de caractères
Nom de la méthode de l'objet automation à exécuter. Cette méthode est donnée par le serveur.
Remarque : La liste des méthodes pouvant être utilisées dépend du serveur. Pour connaître les méthodes, reportez-vous à la documentation du serveur.
<Paramètres> : Tout type (optionnel)
Paramètres passés à la méthode. Pour utiliser la valeur par défaut d'un paramètre optionnel, il est possible d'utiliser "*" ou la constante OLEIgnore.
Remarques

Durée de vie d'un objet automation

L'objet automation est créé lors de sa déclaration.
L'objet automation est automatiquement détruit à la fin du traitement contenant sa déclaration.
Un objet automation déclaré "global" dans le code :
  • d'initialisation d'une fenêtre (ou d'une page) sera détruit à la fin du traitement de fermeture de la fenêtre (ou de la page).
  • d'initialisation d'un projet sera détruit à la fin du traitement de fermeture de la première fenêtre / page du projet.

Allocation d'un objet automation

  • Lors de l'allocation d'un objet automation, le serveur automation est automatiquement lancé.
  • Pour allouer un objet automation avec une instance existante d'un serveur automation, utilisez la fonction ObjetActif.

Passage de paramètre à une méthode

  • Les méthodes des serveurs automation peuvent attendre un ou plusieurs paramètres.
  • Lors de l'appel d'une méthode, l'ordre des paramètres doit être respecté (reportez-vous à la documentation du serveur et de ses méthodes si nécessaire).
  • Pour certains serveurs automation, certains paramètres des méthodes ne sont pas valués : seule la présence du paramètre a de l'importance. La valeur prise par ce paramètre n'en a pas.
    Par exemple, la méthode "EditionRemplacer" de Word Basic accepte 10 paramètres, le dernier (RemplacerTout) étant non valué.
    En WLangage, pour les paramètres non valués, il suffit de passer une valeur quelconque.
  • Les méthodes de certains serveurs automation peuvent avoir des paramètres optionnels situés à n'importe quel rang dans la liste des paramètres.
En WLangage, les paramètres optionnels doivent nécessairement être situés à droite des paramètres obligatoires.
Ainsi pour donner une valeur quelconque à un paramètre optionnel, il suffit d'affecter le caractère * au paramètre optionnel. Par contre, ce caractère sera inutile pour les paramètres optionnels situés à droite du dernier paramètre obligatoire.
Windows

Utilisation d'un objet OLE Automation depuis un service

Tous les objets OLE Automation ne peuvent pas être utilisés par défaut depuis un service.
Par exemple, l'allocation d'un objet OpenOffice depuis un service s'exécutant avec le compte système local peut se solder par le retour d'une erreur de type "L'objet automation com.sun.star.ServiceManager n'est pas installé sur votre système".
m_oApplication = allouer un objet Automation "com.sun.star.ServiceManager"
Il faut dans ce cas intervenir sur la configuration de Windows pour permettre l'utilisation de l'objet OLE Automation depuis un service. Les opérations à effectuer sont les suivantes :
  • Affichez le panneau de configuration de Windows,
  • Sélectionnez l'option "Outils d'administration",
  • Sélectionnez "Service de composants",
  • Déroulez l'arborescence Ordinateurs/Poste de Travail/Configuration DCOM
  • Sélectionnez "OpenOffice service manager" et affichez ses propriétés (option "Propriétés" du menu contextuel)
  • Dans l'onglet "Identité", sélectionnez une identité adaptée (le compte utilisateur qui exécutera l'application).
WEBDEV - Code Serveur

Objets automation et WEBDEV

L'utilisation du type Automation peut poser des problèmes dans un site. En Intranet, les objets automation sont utilisables avec précaution sur des cas ponctuels et rapides. En Intranet, les objets automation constituent une conception dangereuse et sont très déconseillés.
Les problèmes pouvant être rencontrés sont les suivants :
  • Consommation mémoire importante.
  • Limitation du nombre d'utilisateurs.
  • Montée en charge mal contrôlée des objets automation utilisés.
  • Accès concurrentiels aux ressources et en particulier aux fichiers.
  • Eventuelles fenêtres bloquantes de l'objet automation s'ouvrant sur le serveur.
Dans la mesure du possible, il est conseillé d'utiliser une autre solution technique. Par exemple :
  • Utilisation d'un Back Office : Enregistrer les éléments à exécuter dans un fichier (HyperFileSQL, Texte, ...) et l'exécuter grâce à une application WINDEV qui fonctionne en tâche de fond sur le serveur.
  • Utilisation de services WEB, ...
Remarque : Bien souvent, l'utilisation d'objets automation nécessite une configuration particulière du serveur (notamment pour les aspects de sécurité). Pour plus de détails, consultez le fournisseur.
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Utilisation dans un Thread
Pour utiliser des objets automations dans un Thread secondaire, si vous avez le message d'erreur suivant
"L'objet automation <votre objet> n'est pas installé sur votre système"
il faut au préalable initialisé la bibliothèque DCOM

Au début de votre Thread
API("Ole32.DLL","CoInitializeEx",Null,0) // Appel à la fonction : initialisation de la bibliothèque COM

Déclaration de votre objet DCOM
Utilisation de votre objet
Libération de votre objet

A la fin de votre Thread

API("Ole32.DLL","CoUninitialize") // Toujours accompagné un "CoInitializeEx" par "CoUninitialize" !

Merci à Seb!
Phil69
08 sep. 2011