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 |
---|---|
|
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. |
|
Indique que le curseur de commentaires est forcé pendant le démarrage du processus. Le curseur Sélection normale s’affiche. |
|
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. |
|
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. |
|
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. |
|
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. |
|
La ligne de commande provient d’une source non approuvée. Pour plus d’informations, consultez Remarques. |
|
Les membres dwXCountChars et dwYCountChars contiennent des informations supplémentaires. |
|
Le membre dwFillAttribute contient des informations supplémentaires. |
|
Le membre Cet indicateur ne peut pas être utilisé avec STARTF_USESTDHANDLES. |
|
Les membres dwX et dwY contiennent des informations supplémentaires. |
|
Le membre wShowWindow contient des informations supplémentaires. |
|
Les membres dwXSize et dwYSize contiennent des informations supplémentaires. |
|
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
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 à
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
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
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) |