Structure STARTUPINFOA (processthreadsapi.h)

Spécifie la station de fenêtre, le bureau, les handles standard et l’apparence de la fenêtre main pour un processus au moment de la création.

Syntaxe

typedef struct _STARTUPINFOA {
  DWORD  cb;
  LPSTR  lpReserved;
  LPSTR  lpDesktop;
  LPSTR  lpTitle;
  DWORD  dwX;
  DWORD  dwY;
  DWORD  dwXSize;
  DWORD  dwYSize;
  DWORD  dwXCountChars;
  DWORD  dwYCountChars;
  DWORD  dwFillAttribute;
  DWORD  dwFlags;
  WORD   wShowWindow;
  WORD   cbReserved2;
  LPBYTE lpReserved2;
  HANDLE hStdInput;
  HANDLE hStdOutput;
  HANDLE hStdError;
} STARTUPINFOA, *LPSTARTUPINFOA;

Membres

cb

Taille de la structure, en octets.

lpReserved

Réservés au; doit avoir la valeur NULL.

lpDesktop

Nom du bureau ou nom du bureau et de la station de fenêtre pour ce processus. Une barre oblique inverse dans la chaîne indique que la chaîne inclut à la fois les noms des postes de bureau et de la fenêtre.

Pour plus d’informations, consultez Connexion de thread à un bureau.

lpTitle

Pour les processus console, il s’agit du titre affiché dans la barre de titre si une nouvelle fenêtre de console est créée. Si la valeur est NULL, le nom du fichier exécutable est utilisé comme titre de la fenêtre à la place. Ce paramètre doit avoir la valeur NULL pour les processus d’interface utilisateur graphique ou de console qui ne créent pas de fenêtre de console.

dwX

Si dwFlags spécifie STARTF_USEPOSITION, ce membre est le décalage x du coin supérieur gauche d’une fenêtre si une nouvelle fenêtre est créée, en pixels. Sinon, ce membre est ignoré.

Le décalage se trouve dans le coin supérieur gauche de l’écran. Pour les processus d’interface utilisateur graphique, la position spécifiée est utilisée la première fois que le nouveau processus appelle CreateWindow pour créer une fenêtre qui se chevauche si le paramètre x de CreateWindow est CW_USEDEFAULT.

dwY

Si dwFlags spécifie STARTF_USEPOSITION, ce membre est le décalage y du coin supérieur gauche d’une fenêtre si une nouvelle fenêtre est créée, en pixels. Sinon, ce membre est ignoré.

Le décalage se trouve dans le coin supérieur gauche de l’écran. Pour les processus d’interface graphique graphique, la position spécifiée est utilisée la première fois que le nouveau processus appelle CreateWindow pour créer une fenêtre superposée si le paramètre y de CreateWindow est CW_USEDEFAULT.

dwXSize

Si dwFlags spécifie STARTF_USESIZE, ce membre est la largeur de la fenêtre si une nouvelle fenêtre est créée, en pixels. Sinon, ce membre est ignoré.

Pour les processus d’interface utilisateur graphique, cela n’est utilisé que la première fois que le nouveau processus appelle CreateWindow pour créer une fenêtre qui se chevauche si le paramètre nWidth de CreateWindow est CW_USEDEFAULT.

dwYSize

Si dwFlags spécifie STARTF_USESIZE, ce membre est la hauteur de la fenêtre si une nouvelle fenêtre est créée, en pixels. Sinon, ce membre est ignoré.

Pour les processus d’interface graphique graphique, cela n’est utilisé que la première fois que le nouveau processus appelle CreateWindow pour créer une fenêtre qui se chevauche si le paramètre nHeight de CreateWindow est CW_USEDEFAULT.

dwXCountChars

Si dwFlags spécifie STARTF_USECOUNTCHARS, si une nouvelle fenêtre de console est créée dans un processus de console, ce membre spécifie la largeur de la mémoire tampon d’écran, dans les colonnes de caractères. Sinon, ce membre est ignoré.

dwYCountChars

Si dwFlags spécifie STARTF_USECOUNTCHARS, si une nouvelle fenêtre de console est créée dans un processus de console, ce membre spécifie la hauteur de la mémoire tampon d’écran, en lignes de caractères. Sinon, ce membre est ignoré.

dwFillAttribute

Si dwFlags spécifie STARTF_USEFILLATTRIBUTE, ce membre est le texte initial et les couleurs d’arrière-plan si une nouvelle fenêtre de console est créée dans une application console. Sinon, ce membre est ignoré.

Cette valeur peut être n’importe quelle combinaison des valeurs suivantes : FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED et BACKGROUND_INTENSITY. Par exemple, la combinaison de valeurs suivante produit du texte rouge sur un arrière-plan blanc :

FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE

dwFlags

Champ de bits qui détermine si certains membres STARTUPINFO sont utilisés lorsque le processus crée une fenêtre. Ce membre peut être une ou plusieurs des valeurs suivantes.

Valeur Signification
STARTF_FORCEONFEEDBACK
0x00000040
Indique que le curseur est en mode de commentaires pendant deux secondes après l’appel de CreateProcess . Le curseur d'arrière-plan d'exécution est affiché (voir l'onglet Pointeurs dans l'utilitaire du panneau de configuration de la souris).

Si, pendant ces deux secondes, le processus effectue le premier appel d’interface graphique graphique, le système accorde cinq secondes de plus au processus. Si, pendant ces cinq secondes, le processus affiche une fenêtre, le système accorde cinq secondes de plus au processus pour terminer le dessin de la fenêtre.

Le système désactive le curseur de commentaires après le premier appel à GetMessage, que le processus soit dessiné ou non.

STARTF_FORCEOFFFEEDBACK
0x00000080
Indique que la désactivation du curseur de commentaire est forcée pendant le démarrage du processus. Le curseur de sélection normale s'affiche.
STARTF_PREVENTPINNING
0x00002000
Indique que les fenêtres créées par le processus ne peuvent pas être épinglées dans la barre des tâches.

Cet indicateur doit être combiné avec STARTF_TITLEISAPPID.

STARTF_RUNFULLSCREEN
0x00000020
Indique que le processus doit être exécuté en mode plein écran, plutôt qu'en mode avec fenêtres.

Cet indicateur est valide uniquement pour les applications console s’exécutant sur un ordinateur x86.

STARTF_TITLEISAPPID
0x00001000
Le membre lpTitle contient un AppUserModelID. Cet identificateur contrôle la façon dont la barre des tâches et le menu Démarrer présentent l’application, et permet de l’associer aux raccourcis et aux raccourcis appropriés Listes. En règle générale, les applications utilisent les fonctions SetCurrentProcessExplicitAppUserModelID et GetCurrentProcessExplicitAppUserModelID au lieu de définir cet indicateur. Pour plus d’informations, consultez ID de modèle utilisateur d’application.

Si STARTF_PREVENTPINNING est utilisé, les fenêtres d’application ne peuvent pas être épinglées sur la barre des tâches. L’utilisation de toutes les propriétés de fenêtre liées à AppUserModelID par l’application remplace ce paramètre pour cette fenêtre uniquement.

Cet indicateur ne peut pas être utilisé avec STARTF_TITLEISLINKNAME.

STARTF_TITLEISLINKNAME
0x00000800
Le membre lpTitle contient le chemin du fichier de raccourci (.lnk) que l’utilisateur a appelé pour démarrer ce processus. Cela est généralement défini par l’interpréteur de commandes lorsqu’un fichier .lnk pointant vers l’application lancée est appelé. La plupart des applications n’auront pas besoin de définir cette valeur.

Cet indicateur ne peut pas être utilisé avec STARTF_TITLEISAPPID.

STARTF_UNTRUSTEDSOURCE
0x00008000
La ligne de commande provient d’une source non approuvée. Pour plus d'informations, consultez la section Notes.
STARTF_USECOUNTCHARS
0x00000008
Les membres dwXCountChars et dwYCountChars contiennent des informations supplémentaires.
STARTF_USEFILLATTRIBUTE
0x00000010
Le membre dwFillAttribute contient des informations supplémentaires.
STARTF_USEHOTKEY
0x00000200
Le membre hStdInput contient des informations supplémentaires.

Cet indicateur ne peut pas être utilisé avec STARTF_USESTDHANDLES.

STARTF_USEPOSITION
0x00000004
Les membres dwX et dwY contiennent des informations supplémentaires.
STARTF_USESHOWWINDOW
0x00000001
Le membre wShowWindow contient des informations supplémentaires.
STARTF_USESIZE
0x00000002
Les membres dwXSize et dwYSize contiennent des informations supplémentaires.
STARTF_USESTDHANDLES
0x00000100
Les membres hStdInput, hStdOutput et hStdError contiennent des informations supplémentaires.

Si cet indicateur est spécifié lors de l’appel de l’une des fonctions de création de processus, les handles doivent être hérités et le paramètre bInheritHandles de la fonction doit avoir la valeur TRUE. Pour plus d’informations, consultez Gérer l’héritage.

Si cet indicateur est spécifié lors de l’appel de la fonction GetStartupInfo , ces membres sont soit la valeur de handle spécifiée lors de la création du processus, soit INVALID_HANDLE_VALUE.

Les handles doivent être fermés avec CloseHandle lorsqu’ils ne sont plus nécessaires.

Cet indicateur ne peut pas être utilisé avec STARTF_USEHOTKEY.

wShowWindow

Si dwFlags spécifie STARTF_USESHOWWINDOW, ce membre peut être l’une des valeurs qui peuvent être spécifiées dans le paramètre nCmdShow pour la fonction ShowWindow , à l’exception de SW_SHOWDEFAULT. Sinon, ce membre est ignoré.

Pour les processus d’interface graphique graphique, la première fois que ShowWindow est appelé, son paramètre nCmdShow est ignoré wShowWindow spécifie la valeur par défaut. Dans les appels suivants à ShowWindow, le membre wShowWindow est utilisé si le paramètre nCmdShow de ShowWindow est défini sur SW_SHOWDEFAULT.

cbReserved2

Réservé à l’utilisation par l’exécution C ; doit être égal à zéro.

lpReserved2

Réservé à l’utilisation par l’exécution C ; doit avoir la valeur NULL.

hStdInput

Si dwFlags spécifie STARTF_USESTDHANDLES, ce membre est le handle d’entrée standard pour le processus. Si STARTF_USESTDHANDLES n’est pas spécifié, la mémoire tampon du clavier est la mémoire tampon par défaut pour l’entrée standard.

Si dwFlags spécifie STARTF_USEHOTKEY, ce membre spécifie une valeur de raccourci qui est envoyée en tant que paramètre wParam d’un message WM_SETHOTKEY à la première fenêtre de niveau supérieur éligible créée par l’application propriétaire du processus. Si la fenêtre est créée avec le style de fenêtre WS_POPUP, elle n’est éligible que si le style de fenêtre étendu WS_EX_APPWINDOW est également défini. Pour plus d’informations, consultez CreateWindowEx.

Sinon, ce membre est ignoré.

hStdOutput

Si dwFlags spécifie STARTF_USESTDHANDLES, ce membre est le handle de sortie standard pour le processus. Sinon, ce membre est ignoré et la valeur par défaut pour la sortie standard est la mémoire tampon de la fenêtre de console.

Si un processus est lancé à partir de la barre des tâches ou de la liste de raccourcis, le système définit hStdOutput sur un handle du moniteur qui contient la barre des tâches ou la liste de raccourcis utilisée pour lancer le processus. Pour plus d’informations, consultez Remarques. Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP et Windows Server 2003 : Ce comportement a été introduit dans Windows 8 et Windows Server 2012.

hStdError

Si dwFlags spécifie STARTF_USESTDHANDLES, ce membre est le handle d’erreur standard du processus. Sinon, ce membre est ignoré et la valeur par défaut pour l’erreur standard est la mémoire tampon de la fenêtre de console.

Remarques

Pour les processus d’interface utilisateur graphique (GUI), ces informations affectent la première fenêtre créée par la fonction CreateWindow et affichée par la fonction ShowWindow . Pour les processus de console, ces informations affectent la fenêtre de console si une console est créée pour le processus. Un processus peut utiliser la fonction GetStartupInfo pour récupérer la structure STARTUPINFO spécifiée lors de la création du processus.

Si un processus d’interface utilisateur graphique est démarré et que ni STARTF_FORCEONFEEDBACK ni STARTF_FORCEOFFFEEDBACK n’est spécifié, le curseur de commentaires sur le processus est utilisé. Un processus d’interface utilisateur graphique est un processus dont le sous-système est spécifié sous la forme « windows ».

Si un processus est lancé à partir de la barre des tâches ou de la liste de raccourcis, le système définit GetStartupInfo pour récupérer la structure STARTUPINFO et case activée que hStdOutput est défini. Si c’est le cas, utilisez GetMonitorInfo pour case activée si hStdOutput est un handle de moniteur valide (HMONITOR). Le processus peut ensuite utiliser le handle pour positionner ses fenêtres.

Si l’indicateur STARTF_UNTRUSTEDSOURCE est spécifié, l’application doit savoir que la ligne de commande n’est pas approuvée. Si cet indicateur est défini, les applications doivent désactiver les fonctionnalités potentiellement dangereuses telles que les macros, le contenu téléchargé et l’impression automatique. Cet indicateur est facultatif, mais les applications qui appellent CreateProcess sont encouragées à définir cet indicateur lors du lancement d’un programme avec des arguments de ligne de commande non approuvés (tels que ceux fournis par le contenu web) afin que le processus nouvellement créé puisse appliquer la stratégie appropriée.

L’indicateur de STARTF_UNTRUSTEDSOURCE est pris en charge à partir de Windows Vista, mais il n’est pas défini dans les fichiers d’en-tête du KIT de développement logiciel (SDK) avant le Windows 10 SDK. Pour utiliser l’indicateur dans les versions antérieures à Windows 10, vous pouvez le définir manuellement dans votre programme.

Exemples

L’exemple de code suivant montre l’utilisation de StartUpInfoA.

#include <windows.h>
#include <stdio.h>
#include <tchar.h>

void _tmain( int argc, TCHAR *argv[] )
{
    STARTUPINFO si;
    PROCESS_INFORMATION pi;

    ZeroMemory( &si, sizeof(si) );
    si.cb = sizeof(si);
    ZeroMemory( &pi, sizeof(pi) );

    if( argc != 2 )
    {
        printf("Usage: %s [cmdline]\n", argv[0]);
        return;
    }

    // Start the child process. 
    if( !CreateProcess( NULL,   // No module name (use command line)
        argv[1],        // Command line
        NULL,           // Process handle not inheritable
        NULL,           // Thread handle not inheritable
        FALSE,          // Set handle inheritance to FALSE
        0,              // No creation flags
        NULL,           // Use parent's environment block
        NULL,           // Use parent's starting directory 
        &si,            // Pointer to STARTUPINFO structure
        &pi )           // Pointer to PROCESS_INFORMATION structure
    ) 
    {
        printf( "CreateProcess failed (%d).\n", GetLastError() );
        return;
    }

    // Wait until child process exits.
    WaitForSingleObject( pi.hProcess, INFINITE );

    // Close process and thread handles. 
    CloseHandle( pi.hProcess );
    CloseHandle( pi.hThread );
}

Pour plus d’informations sur cet exemple, consultez Création de processus.

Notes

L’en-tête processthreadsapi.h définit STARTUPINFO comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête processthreadsapi.h (inclure Windows.h sur Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2)

Voir aussi

CreateProcess

CreateProcessAsUser

CreateProcessWithLogonW

CreateProcessWithTokenW

GetStartupInfo