Partager via


STRUCTURE STARTUPINFOW (processthreadsapi.h)

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

Syntaxe

typedef struct _STARTUPINFOW {
  DWORD  cb;
  LPWSTR lpReserved;
  LPWSTR lpDesktop;
  LPWSTR 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;
} STARTUPINFOW, *LPSTARTUPINFOW;

Membres

cb

Taille de la structure, en octets.

lpReserved

Réservé; doit être NULL.

lpDesktop

Nom du bureau, ou nom de la station de 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 de poste de travail et de station de fenêtre.

Pour plus d’informations, consultez connexion de thread à unde bureau.

lpTitle

Pour les processus de 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 fenêtre à la place. Ce paramètre doit être NULL pour les processus gui ou 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 gui, 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 x de CreateWindow est CW_USEDEFAULT.

dwY

Si dwFlags spécifie STARTF_USEPOSITION, ce membre est le décalage y de l’angle 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 gui, 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 utilisateur, il s’agit uniquement de la première fois que le nouveau processus appelle CreateWindow pour créer une fenêtre superposée 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 utilisateur utilisateur, il s’agit uniquement de la première fois que le nouveau processus appelle CreateWindow pour créer une fenêtre superposée 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, dans les 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 suivante de valeurs 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 STARTUPINFO membres 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 commentaires pendant deux secondes après l’appel de CreateProcess. Le curseur Working in Background s’affiche (voir l’onglet Pointeurs de l’utilitaire du panneau de configuration de la souris).

Si, pendant ces deux secondes, le processus effectue le premier appel de l’interface graphique graphique, le système donne cinq autres secondes au processus. Si, pendant ces cinq secondes, le processus affiche une fenêtre, le système donne cinq autres secondes 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 dessine ou non.

STARTF_FORCEOFFFEEDBACK
0x00000080
Indique que le curseur de commentaires est forcé pendant le démarrage du processus. Le curseur 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é à STARTF_TITLEISAPPID.

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

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 menu Démarrer présentent l’application et lui permet d’être associée aux raccourcis appropriés et aux listes de raccourcis. 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 dans la barre des tâches. L’utilisation de toutes les propriétés de fenêtre 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 Remarques.
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, hStdOutputet membres 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 la valeur de handle spécifiée lors de la création du processus ou 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 gui, la première fois que showWindow est appelée, 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é à une utilisation par l’exécution C ; doit être égal à zéro.

lpReserved2

Réservé à une utilisation par l’exécution C ; doit être NULL.

hStdInput

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

Si dwFlags spécifie STARTF_USEHOTKEY, ce membre spécifie une valeur de touche d’accès rapide 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 pas éligible, sauf 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 du processus. Dans le cas contraire, ce membre est ignoré et la valeur par défaut de 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 à 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 pour le processus. Sinon, ce membre est ignoré et la valeur par défaut de 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 nouvelle 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 utilisateur est démarré et que ni STARTF_FORCEONFEEDBACK ni STARTF_FORCEOFFFEEDBACK n’est spécifié, le curseur de commentaires du processus est utilisé. Un processus d’interface utilisateur utilisateur est celui dont le sous-système est spécifié en tant que « fenêtres ».

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 vérifier que hStdOutput est défini. Si c’est le cas, utilisez GetMonitorInfo pour vérifier 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. 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 (par exemple, ceux fournis par le contenu web) afin que le processus nouvellement créé puisse appliquer une stratégie appropriée.

L’indicateur 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 SDK Windows 10. 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 StartUpInfoW.

#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.

Note

L’en-tête processthreadsapi.h définit STARTUPINFO comme 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.

Exigences

Exigence Valeur
client minimum pris en charge Windows XP [applications de bureau uniquement]
serveur minimum pris en charge Windows Server 2003 [applications de bureau uniquement]
d’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