DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Fonctions WLangage / Fonctions standard / Fonctions de gestion de Windows / Fonctions Exécutables
  • Utilisation d'une ligne de commande
  • Utilisation de la constante exeActif
  • Valeur de retour d'un exécutable WINDEV
  • Lancement d'une application sous Windows Vista (et supérieur)
  • Divers
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Lance l'exécution d'un programme (exécutable par exemple) depuis l'application en cours.
Etats et Requêtes Il est possible de récupérer :
  • la valeur de retour de l'exécutable avec la constante exeValeurRetour.
  • l'identificateur du processus, appelé également PID avec la constante exePID.
Exemple
Syntaxe

Lancer un exécutable (en mode bloquant ou non bloquant) Masquer les détails

<Résultat> = LanceAppli(<Nom du programme> [, <Mode> [, <Attente fin> [, <Répertoire de travail>]]])
<Résultat> : Booléen
  • Vrai si le programme a été lancé,
  • Faux dans le cas contraire. La fonction ErreurInfo permet d'obtenir plus de détails sur l'erreur.
<Nom du programme> : Chaîne de caractères
Nom du programme à lancer avec si nécessaire son chemin et/ou les paramètres à passer au programme.
  • Si aucun chemin n'est précisé, le programme est recherché tout d'abord dans le répertoire en cours, puis dans le répertoire de Windows et dans les répertoires accessibles par le PATH.
  • Si l'exécutable correspond à un nom long avec espaces, il est nécessaire d'utiliser la syntaxe suivante :
    <Nom du programme> = " " " Nom_Long_avec_espaces" " Ligne_commande"
<Mode> : Constante optionnelle de type entier
Mode de lancement du programme (aucune action sur les programmes DOS) :
exeActif
(Valeur par défaut)
Le programme lancé est actif, il s'exécute en "prenant la main" sur le programme en cours.
exeIconiseLe programme lancé est inactif et s'exécute icônisé.
exeInactifLe programme lancé est inactif : il s'exécute alors que le programme en cours garde le focus.
exeMaximiseLe programme lancé est actif, il s'exécute en "prenant la main" sur le programme en cours (la fenêtre d'exécution a la taille maximale autorisée).
exeSansHéritageHandlePermet d'indiquer que l'exécutable ne doit pas hériter des "Handles" du parent (attention, s'applique à TOUS les handles, fichiers compris). L'exécutable est indépendant de l'application qui le lance.
Cette constante peut être combinée avec les autres constantes de mode de lancement de l'application.
<Attente fin> : Constante de type Booléen optionnelle
Paramètre le délai nécessaire à la reprise de l'exécution du programme en cours :
exeBloquantLe programme en cours reprend son exécution lorsque le programme lancé est terminé.
exeNonBloquant
(Valeur par défaut)
Le programme en cours et le programme lancé s'exécutent en parallèle.
<Répertoire de travail> : Chaîne de caractères optionnelle
Répertoire de travail de l'application à lancer.
Etats et RequêtesWindows

Lancer un programme et récupérer une valeur Masquer les détails

<Résultat> = LanceAppli(<Nom du programme> [, <Mode> [, <Elément à renvoyer> [, <Répertoire de travail>]]])
<Résultat> : Entier
Valeur recherchée :
  • Valeur de retour de l'exécutable si <Elément à renvoyer> correspond à la constante exeValeurRetour.
  • PID de l'exécutable si <Elément à renvoyer> correspond à la constante exePID.
La fonction ErreurInfo permet de savoir si une erreur a été rencontrée.
<Nom du programme> : Chaîne de caractères
Nom du programme à lancer avec si nécessaire son chemin et/ou les paramètres à passer au programme.
  • Si aucun chemin n'est précisé, le programme est recherché tout d'abord dans le répertoire en cours, puis dans le répertoire de Windows et dans les répertoires accessibles par le PATH.
  • Si l'exécutable correspond à un nom long avec espaces, il est nécessaire d'utiliser la syntaxe suivante :
    <Nom du programme> = " " " Nom_Long_avec_espaces" " Ligne_commande"
<Mode> : Constante optionnelle de type entier
Mode de lancement du programme (aucune action sur les programmes DOS).
exeActif
(Valeur par défaut)
Le programme lancé est actif, il s'exécute en "prenant la main" sur le programme en cours
exeIconiseLe programme lancé est inactif et s'exécute iconisé
exeInactifLe programme lancé est inactif : il s'exécute alors que le programme en cours garde le focus
exeMaximiseLe programme lancé est actif, il s'exécute en "prenant la main" sur le programme en cours (la fenêtre d'exécution a la taille maximale autorisée)
<Elément à renvoyer> : Constante optionnelle
Paramètre le résultat de la fonction :
exePIDLe programme en cours et le programme lancé s'exécutent en parallèle. <Résultat> correspond à l'identificateur du processus créé (également appelé PID) de l'exécutable, si celui-ci a été lancé, 0 en cas d'échec.
Cet identificateur peut être utilisé par exemple dans certaines API.
exeValeurRetourLe programme en cours reprend son exécution lorsque le programme lancé est terminé. <Résultat> correspond à la valeur de retour de l'exécutable.
<Répertoire de travail> : Chaîne de caractères optionnelle
Répertoire de travail de l'application à lancer.
Remarques

Utilisation d'une ligne de commande

Pour passer des paramètres en ligne de commande à l'exécutable lancé, il est nécessaire de spécifier le chemin complet et le nom de l'exécutable à lancer.
Etats et RequêtesWindows

Utilisation de la constante exeActif

Si le traitement dans lequel l'application est lancée (avec la constante exeActif) exécute un code permettant au programme appelant de reprendre le focus, le programme appelé perd la main.
Pour que le programme appelé conserve le focus, il ne faut pas :
  • appeler une autre fenêtre ou boîte de dialogue après l'appel de la fonction LanceAppli,
  • appeler la fonction DonneFocusEtRetourUtilisateur après la fonction LanceAppli.
De plus, le champ Bouton (éventuel) dont l'événement "Clic" associé contient un appel de la fonction LanceAppli ne doit pas être "Tab Stop" (option "Accessible par TAB" dans l'onglet "UI" de la description du champ).
Etats et RequêtesWindows

Valeur de retour d'un exécutable WINDEV

Un exécutable WINDEV peut renvoyer une valeur de retour. Il suffit de :
  1. Créer une variable globale au projet de type Entier.
  2. Initialiser cette variable avec la valeur à renvoyer.
  3. Renvoyer cette variable avec le mot-clé RENVOYER dans le code de fermeture du projet.
Etats et RequêtesWindows

Lancement d'une application sous Windows Vista (et supérieur)

Si le mécanisme de l'UAC (contrôle des comptes utilisateurs) est activé, l'application qui utilise la fonction LanceAppli pour lancer une autre application doit avoir des droits supérieurs à l'application qui est lancée.
Par exemple, une première application lancée avec les droits administrateur peut lancer une seconde application qui ne nécessite pas de droits spécifiques.
Si la seconde application nécessite plus de droits que l'application qui la lance, il est possible que la seconde application ne se lance pas. Windows propose alors d'activer la gestion de la compatibilité avec Windows Vista. Si la gestion de la compatibilité est activée, la seconde application sera exécutée à son prochain lancement. Il est également possible d'utiliser la fonction LanceAppliAssociée.
Etats et RequêtesWindows

Divers

  • La fonction LanceAppli ne modifie pas le répertoire en cours. Le répertoire en cours avant l'exécution de la fonction LanceAppli est identique au répertoire en cours après l'exécution de la fonction LanceAppli.
  • Si le programme lancé ne prend pas en compte le mode d'exécution spécifié, le programme est lancé par défaut en mode exeActif.
Composante : wd290std.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
Du bon usage du paramètre «Répertoire de travail»
Le paramètre «Répertoire de travail» est utilisé pour définir le dossier en cours du nouveau processus, une fois que celui-ci est crée, avant d'être exécuté.

Le paramètre «Répertoire de travail» ne sert pas à localiser l'emplacement du fichier exécutable renseigné dans le paramètre «Nom du programme».

Si le programme à exécuter n'est pas préfixé par un chemin qui désigne son emplacement, alors Windows effectue une recherche (dossier en cours, dossier système, dossiers de la variable d'environnement PATH...).
Le paramètre «Répertoire de travail» n'est pas pris en compte pour cette recherche.
=JBO=
11 déc. 2020
UAC : Lancer un programme nécessitant plus de droits
Si on essaie d'ouvrir un programme nécessitant les droits administrateur depuis une application ne les ayants pas avec LanceAppli() il ne se passe rien, l'UAC ne demande même pas à l'utilisateur s'il veut donner les droits.

Pour parer à ça il faut utiliser LanceAppliAssociée() à la place qui utilise l'API ShellExecute de Windows alors que LanceAppli() utilise l'API CreateProcess qui échoura si le processus demande des droits d'admin.

Plus d'info sur : http://technet.microsoft.com/fr-fr/library/dd835540(v=ws.10).aspx
Paul
18 juil. 2013
Appli Win32 non valide
Sur les systèmes Windows Vista/7, il arrive que l'on ai une erreur type "Impossible d'ouvrir l'application ..., Application win32 non valide".

Remplacer
LanceAppli(sMonAppli,<options>)
par
LanceAppli(fCheminCourt(sMonAppli),<options>)
Nicolas I.
19 mar. 2012

Dernière modification : 25/05/2022

Signaler une erreur ou faire une suggestion | Aide en ligne locale