PC SOFT

DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

  • Utilisation d'une ligne de commande
  • Application en arrière-plan : Spécificité à partir de Android 10
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.
Versions 22 et supérieures
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Nouveauté 22
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Android Cette fonction est désormais disponible pour les applications Android.
Widget Android Cette fonction est désormais disponible en mode Widget Android.
Exemple
Versions 22 et supérieures
AndroidWidget Android
// Lancement de Google Maps
LanceAppli("com.google.android.apps.maps")
Nouveauté 22
AndroidWidget Android
// Lancement de Google Maps
LanceAppli("com.google.android.apps.maps")
AndroidWidget Android
// Lancement de Google Maps
LanceAppli("com.google.android.apps.maps")
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"
Versions 22 et supérieures
AndroidWidget Android Nom complet de l'application à lancer (avec le nom de package) avec si nécessaire les paramètres à passer au programme.
  • Exemple : pour lancer l'application Google Maps, <Nom du programme> correspond à : "com.google.android.apps.maps".
  • Versions 27 et supérieures
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
    Nouveauté 27
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
A partir de Android 11, le nom du package doit être ajouté dans le manifeste de l'application. Une illustration est donnée dans la FAQ suivante : Comment autoriser le lancement d'une autre application avec LanceAppli à partir d'une application sous Android 11 ?
Nouveauté 22
AndroidWidget Android Nom complet de l'application à lancer (avec le nom de package) avec si nécessaire les paramètres à passer au programme.
  • Exemple : pour lancer l'application Google Maps, <Nom du programme> correspond à : "com.google.android.apps.maps".
  • Versions 27 et supérieures
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
    Nouveauté 27
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
A partir de Android 11, le nom du package doit être ajouté dans le manifeste de l'application. Une illustration est donnée dans la FAQ suivante : Comment autoriser le lancement d'une autre application avec LanceAppli à partir d'une application sous Android 11 ?
AndroidWidget Android Nom complet de l'application à lancer (avec le nom de package) avec si nécessaire les paramètres à passer au programme.
  • Exemple : pour lancer l'application Google Maps, <Nom du programme> correspond à : "com.google.android.apps.maps".
  • Versions 27 et supérieures
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
    Nouveauté 27
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
    Pour spécifier des paramètres à passer en ligne de commande, il suffit d'utiliser la notation suivante :
    <Nom du programme> = <Nom du package> <Nom paramètre 1> = <Valeur paramètre 1>
A partir de Android 11, le nom du package doit être ajouté dans le manifeste de l'application. Une illustration est donnée dans la FAQ suivante : Comment autoriser le lancement d'une autre application avec LanceAppli à partir d'une application sous Android 11 ?
<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é.
AndroidWidget Android Cette constante n'est pas disponible.
exeInactifLe programme lancé est inactif : il s'exécute alors que le programme en cours garde le focus.
AndroidWidget Android Cette constante n'est pas disponible.
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).
AndroidWidget Android Cette constante n'est pas disponible.
Versions 27 et supérieures
exeSansHéritageHandle
Nouveauté 27
exeSansHéritageHandle
exeSansHéritageHandle
Permet 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.
AndroidWidget Android Cette constante n'est pas disponible.
AndroidWidget Android Le programme lancé est toujours actif : il s'exécute en "prenant la main" sur le programme en cours.
<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é.
AndroidWidget Android L'application peut être lancé en mode non bloquant uniquement. Une erreur fatale est affichée si la constante exeBloquant est utilisée.
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.
AndroidWidget Android Ce paramètre n'est pas disponible.
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.
Android Si le programme lancé est réalisé avec WINDEV ou WINDEV Mobile, il sera possible de récupérer la ligne de commande avec la fonction LigneCommande.
Versions 25 et supérieures
AndroidWidget Android

Application en arrière-plan : Spécificité à partir de Android 10

A partir de Android 10, il n'est plus possible d'ouvrir une fenêtre lorsque l'application est en arrière-plan.
La fonction LanceAppli peut provoquer l'ouverture d'une fenêtre. Si cette fonction est utilisée alors que l'application est en arrière-plan, une erreur fatale sera générée.
Conseils :
  • Il est possible de savoir si l'application est en arrière-plan grâce à la fonction EnModeArrièrePlan.
  • Si une application a besoin d'interagir avec l'utilisateur alors qu'elle se trouve en arrière-plan, la solution consiste à afficher une notification (via le type Notification). Lors du clic sur la notification, l'application sera remise au premier plan si la propriété ActiveApplication est à Vrai. Il est également possible d'ouvrir une fenêtre depuis la procédure passée à la propriété ActionClic.
Nouveauté 25
AndroidWidget Android

Application en arrière-plan : Spécificité à partir de Android 10

A partir de Android 10, il n'est plus possible d'ouvrir une fenêtre lorsque l'application est en arrière-plan.
La fonction LanceAppli peut provoquer l'ouverture d'une fenêtre. Si cette fonction est utilisée alors que l'application est en arrière-plan, une erreur fatale sera générée.
Conseils :
  • Il est possible de savoir si l'application est en arrière-plan grâce à la fonction EnModeArrièrePlan.
  • Si une application a besoin d'interagir avec l'utilisateur alors qu'elle se trouve en arrière-plan, la solution consiste à afficher une notification (via le type Notification). Lors du clic sur la notification, l'application sera remise au premier plan si la propriété ActiveApplication est à Vrai. Il est également possible d'ouvrir une fenêtre depuis la procédure passée à la propriété ActionClic.
AndroidWidget Android

Application en arrière-plan : Spécificité à partir de Android 10

A partir de Android 10, il n'est plus possible d'ouvrir une fenêtre lorsque l'application est en arrière-plan.
La fonction LanceAppli peut provoquer l'ouverture d'une fenêtre. Si cette fonction est utilisée alors que l'application est en arrière-plan, une erreur fatale sera générée.
Conseils :
  • Il est possible de savoir si l'application est en arrière-plan grâce à la fonction EnModeArrièrePlan.
  • Si une application a besoin d'interagir avec l'utilisateur alors qu'elle se trouve en arrière-plan, la solution consiste à afficher une notification (via le type Notification). Lors du clic sur la notification, l'application sera remise au premier plan si la propriété ActiveApplication est à Vrai. Il est également possible d'ouvrir une fenêtre depuis la procédure passée à la propriété ActionClic.
Composante : wd270std.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