Developpez.com - 4D
X

Choisissez d'abord la catégorieensuite la rubrique :


4D System Tool

Date de publication : Mai 2006

Par Jeremy Sullivan (Développeur 4D)
 traduit de l'anglais par Djompolo Diabira (Ingénieur Contrôle Qualité)
 

LANCER PROCESS EXTERNE a été ajouté au langage dans 4D 2004. Sous Mac OS X, presque tout ce qui peut s'exécuter dans le Terminal peut s'accomplir aussi avec LANCER PROCESS EXTERNE et lorsque vous travaillez sur Windows vous avez accès à l'ensemble des commandes du DOS.

Introduction
A propos de l'exemple
En utilisant l'Exemple – Mac OS X
En utilisant l'Exemple – Win XP
Entrée dans le code
Exemples de codes
Conclusion
Télécharger l'exemple


Introduction


Cette note Technique montre plusieurs exemples différents qui utilisent la commande "Lancer Process Externe". Elle permet de donner une idée sur les différentes possibilités d'utilisation de cette commande. LANCER PROCESS EXTERNE a été ajouté au langage dans 4D 2004.

La couche sous-jacente d'Unix de Mac OS X a beaucoup d'applications et utilités que vous pouvez utiliser grâce à LANCER PROCESS EXTERNE. Presque tout ce qui peut s'exécuter dans le Terminal peut s'accomplir aussi avec LANCER PROCESS EXTERNE.

Lorsque vous travaillez sur Windows vous avez accès à l'ensemble des commandes du DOS.


A propos de l'exemple


4D System Tool est une application qui est divisée fondamentalement en deux parties. Puisque nous traitons directement des appels système, il y a très peu de choses qui peuvent être utilisées communément sur les deux plate-formes. L'interface et les commandes disponibles sont par conséquent complètement différentes sous chaque plate-forme. Pour pouvoir apprécier le résultat sur les deux plate-formes, l'exemple doit être exécuté sur Mac OS X et Windows XP.

Notez que cet exemple suppose vous utilisez Mac OS X 10.4 et/ou Windows XP. Aucun des exemples n'a été testé sur des versions antérieures de ces systèmes respectifs.


En utilisant l'Exemple – Mac OS X


Sur Mac OS X l'application est semblable aux utilitaires tel que Cocktail, Onyx ou TinkerTool. Lorsque l'application est lancée quatre boutons de la barre d'outil seront disponibles : Apparence, Maintenance, Man et info.

L'outil "Apparence" permet de changer les divers paramètrages dans le Finder, le Dock, Safari, et d'autres applications. Vous pouvez changer la manière dont les barres de défilement apparaissent, le comportement du Dock et montrer ses icônes, les images disque manipulées, et divers autres paramètrages.

L'outil "Maintenance" permet d'exécuter une commande Périodique, réparation des autorisations disque, mettre à jour le pre-binding et voir quelques informations sur le disque de démarrage.

L'outil "Man" permet de visualiser les pages du Man et de les enregistrer comme documents PDF ou HTML. Les pages du Man (manuel) sont la documentation fournie pour toutes les commandes disponibles de la couche Unix.

L'outil "Info" affiche plusieurs informations sur le système que vous utilisez, comme la version du Kernel, la mémoire installée, la vitesse de processeur, etc.

Vous pouvez sélectionner aussi "Exécuter la commande" du menu Fichier pour ouvrir un dialogue qui permettra d'exécuter n'importe quelle commande directement. Soyez prudent quand vous utilisez cet outil car vous risquez d'endommager votre système si vous exécutez la mauvaise commande.


En utilisant l'Exemple – Win XP


Lorsque l'application est exécutée sur Windows XP vous aurez un ensemble différent de commandes disponibles. Les quatre boutons disponibles de la barre d'outil sont : "Maintenance", "Taches", "Exécuteur Rapide" et "Info".

Avec l'outil "Maintenance" vous pouvez défragmenter un volume ou placer un volume à vérifier par le chkdsk au prochain démarrage.

L'outil "Tâches" vous montrera tous les processus courants et vous permettra de stopper un processus. C'est fondamentalement identique au Gestionnaire de taches quand vous tapez Ctrl-Alt-Suppr.

L'"Exécuteur Rapide" affiche une liste de plusieurs outils que vous pouvez exécuter à partir de la commande Exécuter.

Quelques-uns de ceux-ci vous sont disponibles à travers l'interface XP standard, tel que Ajout/Suppression de programmes, et d'autres sont seulement disponibles en les exécutant par l'invite de commande. Vous pouvez ajouter ou enlever des programmes de la liste en utilisant les boutons "Ajouter" et "Supprimer" en bas du dialogue. La liste d'applications est archivée dans un fichier XML dans le dossier Extras.

L'outil "Info" affiche diverses informations sur votre système, comme la version de Windows, la mémoire installée, la vitesse du processeur, etc.


Entrée dans le code


Chaque appel qui est fait à une application de système passe par la méthode projet ST_comm_executeCommand :
code 4D : méthode ST_comm_executeCommand

C_TEXTE($1;$0;$command_t;$inputStream_t;$outputStream_t;$errorStream_t)
C_BOOLEEN($2;$needsAuthorization_b)

$command_t:=$1
$b_needsAuthorization:=$2
$inputStream_t:=""
$outputStream_t:=""
$errorStream_t:=""

Si ($needsAuthorization_b)
  Si (<>ST_userName_t="") | (<>ST_password_t="")
     $inputStream_t:=<>ST_password_t
  Sinon
     $inputStream_t:=<>ST_password_t
  Fin de si
Fin de si

Si (<>ST_ONWINDOWS_b)
  FIXER VARIABLE ENVIRONNEMENT ("_4D_OPTION_HIDE_CONSOLE";"True")
Fin de si

LANCER PROCESS EXTERNE ($command_t; $inputStream_t; $outputStream_t; $errorStream_t)

ST_error_setError ($errorStream_t)

$0:=$outputStream_t

Cette méthode est passée avec deux paramètres : la commande à exécuter et un booléen indiquant si cette commande aura besoin d'autorisation (pour les commandes d' OS X seulement).

Si l'autorisation est nécessaire, un contrôle est fait pour voir si le nom de l'utilisateur et le mot de passe ont été précédemment fournis par l'utilisateur. Sinon, un dialogue s'ouvre pour les demander.

Quand l'application tourne sur Windows un appel est fait à FIXER VARIABLE ENVIRONNEMENT ainsi la console ne s'ouvrira pas pendant que la commande s'exécute !

Enfin l'appel à LANCER PROCESS EXTERNE est fait, sauvant n'importe quelle erreur qui est reçue et renvoyant le résultat à la méthode appelante.


Exemples de codes

Un exemple simple montrant comment utiliser ST_comm_executeCommand est dans la méthode de projet ST_app_startup (line 32):
code 4D : méthode ST_app_startup

<>ST_userName_t:=ST_comm_executeCommand ("whoami"; Faux)
Le whoami est une fonction d'Unix qui renvoie simplement le nom de l'utilisateur courant. Ceci est exécuté au démarrage comme une facilité aux utilisateurs ainsi ils n'auront pas à écrire leur nom d'utilisateur quand le dialogue d'authentification est affiché.


Pour l'exécution des commandes plus complexes, nous devons les construire de façon à être correctement exécutées. Pour l'exemple regardez la méthode projet ST_man_saveAsHTML (lignes de projet 51- 54):
code 4D : méthode ST_man_saveAsHTML

$manPath_t:=ST_comm_executeCommand ("/bin/sh -c \"man -w "+$manPage_t+"\"";Faux)
$manPath_t:=Sous chaine($manPath_t;1;Length($manPath_t)-1)

ST_comm_executeCommand ("/bin/sh -c \"groff -Thtml -man "+$manPath_t+" >"+ $documentPath_t +"\""; Faux)
ST_comm_executeCommand ("/bin/sh -c \"open '"+$documentPath_t+"'\""; Faux)

Vous noterez que dans chacun de ces appels /bin/sh est appelé avec une option -c suivi des commandes et les options que nous voulons exécuter entre guillemets. Ceci permet de faire exécuter la chaîne entre guillemets par le Shell Bash. C'est une méthode simple qui contourne les problèmes qui peuvent surgir si vous essayez de passer une commande trop complexe directement par LANCER PROCESS EXTERNE.

Dans ce cas-ci la seule ligne qui était susceptible de poser des problèmes est l'appel au groff. Cependant, elle n'empêche pas d'exécuter explicitement des commandes dans le Shell Bash.

La première ligne appelle la commande Man avec l'option -W. Ceci indique à la commande Man de renvoyer le chemin du fichier qu'il montrerait si on l'invitait à montrer la page Man.

La prochaine ligne équilibre le retour à la ligne qui est ajouté quand l'appel est fait. La troisième ligne appelle l'utilitaire groff. L'option -Thtml indique au groff d'être dans le format HTML.

Le -Man dit au groff que c'est une page du Man qu'il formatera. Vient après le chemin au dossier qu'il devrait utiliser comme entrée, dans ce cas-ci le chemin à la page du Man qui a été recherchée précédemment. Le signe > est une instruction qui envoie la sortie à un fichier. Le dernier paramètre est le chemin du fichier à utiliser pour la sortie.

La dernière ligne ouvre le fichier dans l'application par défaut pour ce type de fichier, très probablement un navigateur.


Conclusion


Cet exemple vous a donné quelques idées sur la façon dont on peut incorporer les commandes intégrées disponibles sur chacune des plateformes. Il a vraiment seulement touché la surface sur les commandes disponibles, en particulier sur OS X.

En utilisant LANCER PROCESS EXTERNE, vous pouvez découvrir et changer l'environnement sur lequel votre application 4D est lancée.

Sur Mac OS X vous pouvez tirer profit des utilitaires tels que le groff et le curl (voir la note technique 4D-200603-08-FR), lancer Applescript en utilisant osascript (voir l'article Lancer un AppleScript), et beaucoup plus.

Sur Windows vous avez accès à toutes les commandes du DOS ainsi que la capacité de passer des "flags" aux exécutables qui les accepteront.

Pour apprendre plus au sujet de ce qui est disponible sur Mac OS X, voir la liste complète des pages du Man :
en http://www.clindberg.org/projects/manopen.html

Sur le site d'Apple :
en http://developer.apple.com/documentation/Darwin/Reference/ManPages/index.html

Mac OS X est basé sur BSD, certaines commandes sont propres à BSD et n'apparaissent pas dans les distributions Linux. Utilisez donc des recherches ciblées :
http://www.google.com/bsd
http://www.google.com/mac

iMan :
en http://sourceforge.net/projects/iman-macosx/

Il existe peu d'aides en français :
fr http://www.zengeek.fr/unix/man/index.html

Certaines "man pages" ont été traduites en français.
fr http://dpobel.free.fr/man/html/index.php.

Une liste complète des commandes du DOS et comment les utiliser est disponible sur le site web de Microsoft :
fr Liste alphabétique des commandes
fr Vue d'ensemble de l'interface de commande
fr Description des fichiers du panneau de config. sous Windows XP


Télécharger l'exemple


Télécharger la base exemple.

__________________________________________________
Copyright © 1985-2009 4D SA - Tous droits réservés
Tous les efforts ont été faits pour que le contenu de cette note technique présente le maximum de fiabilité possible.
Néanmoins, les différents éléments composant cette note technique, et le cas échéant, le code, sont fournis sans garantie d'aucune sorte. L'auteur et 4D S.A. déclinent donc toute responsabilité quant à l'utilisation qui pourrait être faite de ces éléments, tant à l'égard de leurs utilisateurs que des tiers.
Les informations contenues dans ce document peuvent faire l'objet de modifications sans préavis et ne sauraient en aucune manière engager 4D SA. La fourniture du logiciel décrit dans ce document est régie par un octroi de licence dont les termes sont précisés par ailleurs dans la licence électronique figurant sur le support du Logiciel et de la Documentation afférente. Le logiciel et sa documentation ne peuvent être utilisés, copiés ou reproduits sur quelque support que ce soit et de quelque manière que ce soit, que conformément aux termes de cette licence.
Aucune partie de ce document ne peut être reproduite ou recopiée de quelque manière que ce soit, électronique ou mécanique, y compris par photocopie, enregistrement, archivage ou tout autre procédé de stockage, de traitement et de récupération d'informations, pour d'autres buts que l'usage personnel de l'acheteur, et ce exclusivement aux conditions contractuelles, sans la permission explicite de 4D SA.
4D, 4D Calc, 4D Draw, 4D Write, 4D Insider, 4ème Dimension ®, 4D Server, 4D Compiler ainsi que les logos 4e Dimension, sont des marques enregistrées de 4D SA.
Windows,Windows NT,Win 32s et Microsoft sont des marques enregistrées de Microsoft Corporation.
Apple, Macintosh, Power Macintosh, LaserWriter, ImageWriter, QuickTime sont des marques enregistrées ou des noms commerciaux de Apple Computer,Inc.
Mac2Win Software Copyright © 1990-2002 est un produit de Altura Software,Inc.
4D Write contient des éléments de "MacLink Plus file translation", un produit de DataViz, Inc,55 Corporate drive,Trumbull,CT,USA.
XTND Copyright 1992-2002 © 4D SA. Tous droits réservés.
XTND Technology Copyright 1989-2002 © Claris Corporation.. Tous droits réservés ACROBAT © Copyright 1987-2002, Secret Commercial Adobe Systems Inc.Tous droits réservés. ACROBAT est une marque enregistrée d'Adobe Systems Inc.
Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.
__________________________________________________
 



Valid XHTML 1.1!Valid CSS!

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.
Contacter le responsable de la rubrique 4D