PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEV, WEBDEV ET WINDEV MOBILE

  • Durée de vie d'un objet automation dynamique
  • Allocation d'un objet dynamique
  • Passage de paramètre à une méthode
  • 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
Un objet automation dynamique est un objet automation alloué à la demande, au cours du programme. Les objets automation permettent par exemple de manipuler des logiciels tels que Office 2007 (Word, Excel, ...).
WEBDEV - Code Serveur L'utilisation du type Automation peut poser des problèmes dans un site web. En Intranet, les objets automation sont utilisables avec précaution sur des cas ponctuels et rapides. Sur Internet, les objets automation constituent une conception dangereuse et sont très déconseillés.
Exemple
// Déclaration d'un objet automation dynamique
MonObjetDynamique est un objet Automation dynamique
// Création d'un objet automation dynamique
MonObjetDynamique = allouer un objet Automation MonServeur
// Appeler une méthode d'un objet automation dynamique
MonObjetDynamique>>FichierOuvrir(NomDoc)
Syntaxe

Déclarer un objet automation dynamique Masquer les détails

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

Allouer un objet automation dynamique Masquer les détails

<Nom de l'objet automation dynamique> = allouer un objet automation <Nom du serveur automation>
<Nom de l'objet automation dynamique> : Chaîne de caractères (sans guillemets)
Nom de l'objet automation dynamique à allouer. Cet objet a été préalablement déclaré.
<Nom du serveur automation> : Chaîne de caractères
Nom du serveur de l'objet automation dynamique.

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

<Nom de l'objet automation dynamique>>><Nom de la méthode>([<Paramètres>])
<Nom de l'objet automation dynamique> : Chaîne de caractères (sans guillemets)
Nom de l'objet automation dynamique à manipuler. Cet objet a été préalablement déclaré puis alloué.
<Nom de la méthode> : Chaîne de caractères
Nom de la méthode de l'objet automation dynamique à 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 automation. Pour connaître les méthodes, reportez-vous à la documentation du serveur.
<Paramètres> : Tout type (optionnel)
Paramètres passés à la méthode.
Remarques

Durée de vie d'un objet automation dynamique

L'objet automation dynamique est créé lors de l'allocation de l'objet.
L'objet automation dynamique est automatiquement détruit à la fin du traitement contenant sa déclaration ou lors d'une nouvelle allocation de l'objet.
Un objet automation dynamique déclaré "global" dans le code :
  • d'initialisation d'une fenêtre sera détruit à la fin du traitement de fermeture de la fenêtre.
  • d'initialisation d'un projet sera détruit à la fin du traitement de fermeture de la première fenêtre du projet.
Pour libérer explicitement un objet automation dynamique, utilisez la syntaxe suivante :
Libérer <Nom de l'objet automation dynamique>

Allocation d'un objet dynamique

  • Lors de l'allocation d'un objet automation dynamique, le serveur automation est automatiquement lancé.
  • Pour allouer un objet automation dynamique 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 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.
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