STARTUPINFOW-Struktur (processthreadsapi.h)
Gibt die Fensterstation, den Desktop, die Standardhandles und die Darstellung des Standard Fensters für einen Prozess zum Zeitpunkt der Erstellung an.
Syntax
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;
Member
cb
Die Größe der Struktur in Bytes.
lpReserved
Reserviert; muss NULL sein.
lpDesktop
Der Name des Desktops oder der Name der Desktop- und Fensterstation für diesen Prozess. Ein umgekehrter Schrägstrich in der Zeichenfolge gibt an, dass die Zeichenfolge sowohl die Namen der Desktop- als auch der Fensterstation enthält.
Weitere Informationen finden Sie unter Threadverbindung mit einem Desktop.
lpTitle
Bei Konsolenprozessen ist dies der Titel, der in der Titelleiste angezeigt wird, wenn ein neues Konsolenfenster erstellt wird. Wenn NULL, wird stattdessen der Name der ausführbaren Datei als Fenstertitel verwendet. Dieser Parameter muss null für GUI- oder Konsolenprozesse sein, die kein neues Konsolenfenster erstellen.
dwX
Wenn dwFlags STARTF_USEPOSITION angibt, ist dieses Element der x-Offset der oberen linken Ecke eines Fensters, wenn ein neues Fenster erstellt wird, in Pixel. Andernfalls wird dieser Member ignoriert.
Der Offset befindet sich von der oberen linken Ecke des Bildschirms. Für GUI-Prozesse wird die angegebene Position verwendet, wenn der neue Prozess CreateWindow zum ersten Mal aufruft, um ein überlappende Fenster zu erstellen, wenn der x-Parameter von CreateWindow CW_USEDEFAULT ist.
dwY
Wenn dwFlags STARTF_USEPOSITION angibt, ist dieses Element der y-Offset der oberen linken Ecke eines Fensters, wenn ein neues Fenster erstellt wird, in Pixel. Andernfalls wird dieser Member ignoriert.
Der Offset befindet sich von der oberen linken Ecke des Bildschirms. Für GUI-Prozesse wird die angegebene Position verwendet, wenn der neue Prozess CreateWindow zum ersten Mal aufruft, um ein überlappende Fenster zu erstellen, wenn der y-Parameter von CreateWindow CW_USEDEFAULT ist.
dwXSize
Wenn dwFlags STARTF_USESIZE angibt, ist dieses Element die Breite des Fensters, wenn ein neues Fenster erstellt wird( in Pixeln). Andernfalls wird dieser Member ignoriert.
Für GUI-Prozesse wird dies nur verwendet, wenn der neue Prozess CreateWindow zum ersten Mal aufruft, um ein überlappende Fenster zu erstellen, wenn der nWidth-Parameter von CreateWindow CW_USEDEFAULT ist.
dwYSize
Wenn dwFlags STARTF_USESIZE angibt, ist dieses Element die Höhe des Fensters, wenn ein neues Fenster in Pixel erstellt wird. Andernfalls wird dieser Member ignoriert.
Für GUI-Prozesse wird dies nur verwendet, wenn der neue Prozess CreateWindow zum ersten Mal aufruft, um ein überlappende Fenster zu erstellen, wenn der nHeight-Parameter von CreateWindow CW_USEDEFAULT ist.
dwXCountChars
Wenn dwFlags STARTF_USECOUNTCHARS angibt und ein neues Konsolenfenster in einem Konsolenprozess erstellt wird, gibt dieses Element die Bildschirmpufferbreite in Zeichenspalten an. Andernfalls wird dieser Member ignoriert.
dwYCountChars
Wenn dwFlags STARTF_USECOUNTCHARS angibt und ein neues Konsolenfenster in einem Konsolenprozess erstellt wird, gibt dieses Element die Höhe des Bildschirmpuffers in Zeichenzeilen an. Andernfalls wird dieser Member ignoriert.
dwFillAttribute
Wenn dwFlags STARTF_USEFILLATTRIBUTE angibt, ist dieses Element die Anfangstext- und Hintergrundfarben, wenn in einer Konsolenanwendung ein neues Konsolenfenster erstellt wird. Andernfalls wird dieser Member ignoriert.
Dieser Wert kann eine beliebige Kombination der folgenden Werte sein: FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED und BACKGROUND_INTENSITY. Die folgende Kombination von Werten erzeugt beispielsweise roten Text auf weißem Hintergrund:
FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE
dwFlags
Ein Bitfeld, das bestimmt, ob bestimmte STARTUPINFO-Member verwendet werden, wenn der Prozess ein Fenster erstellt. Bei diesem Member kann es sich um einen oder mehrere der folgenden Werte handeln.
Wert | Bedeutung |
---|---|
|
Gibt an, dass sich der Cursor nach dem Aufruf von CreateProcess zwei Sekunden lang im Feedbackmodus befindet. Der "Arbeiten im Hintergrund"-Cursor wird angezeigt (siehe die Registerkarte "Zeiger" der Maussteuerung).
Wenn der Prozess während dieser zwei Sekunden den ersten GUI-Aufruf vornimmt, gibt das System dem Prozess fünf Sekunden mehr Zeit. Wenn der Prozess während dieser fünf Sekunden ein Fenster anzeigt, gibt das System dem Prozess fünf Sekunden mehr Zeit, um das Zeichnen des Fensters abzuschließen. Das System schaltet den Feedbackcursor nach dem ersten Aufruf von GetMessage aus, unabhängig davon, ob der Prozess zeichnet. |
|
Gibt an, dass der Feedback-Cursor deaktiviert wird, während der Prozess gestartet wird. Der Cursor für die normale Auswahl wird angezeigt. |
|
Gibt an, dass vom Prozess erstellte Fenster nicht auf der Taskleiste angeheftet werden können.
Dieses Flag muss mit STARTF_TITLEISAPPID kombiniert werden. |
|
Gibt an, dass der Prozess im Ganzseitenmodus ausgeführt werden soll, anstatt im Fenstermodus.
Dieses Flag ist nur für Konsolenanwendungen gültig, die auf einem x86-Computer ausgeführt werden. |
|
Das lpTitle-Element enthält eine AppUserModelID. Dieser Bezeichner steuert, wie die Taskleiste und das Startmenü die Anwendung darstellen, und ermöglicht es, sie den richtigen Tastenkombinationen und jump Listen zuzuordnen. Im Allgemeinen verwenden Anwendungen die Funktionen SetCurrentProcessExplicitAppUserModelID und GetCurrentProcessExplicitAppUserModelID , anstatt dieses Flag festzulegen. Weitere Informationen finden Sie unter Anwendungsbenutzermodell-IDs.
Wenn STARTF_PREVENTPINNING verwendet wird, können Anwendungsfenster nicht auf der Taskleiste angeheftet werden. Die Verwendung von AppUserModelID-bezogenen Fenstereigenschaften durch die Anwendung überschreibt diese Einstellung nur für dieses Fenster. Dieses Flag kann nicht mit STARTF_TITLEISLINKNAME verwendet werden. |
|
Das lpTitle-Element enthält den Pfad der Verknüpfungsdatei (.lnk), die der Benutzer aufgerufen hat, um diesen Prozess zu starten. Dies wird in der Regel von der Shell festgelegt, wenn eine .lnk Datei aufgerufen wird, die auf die gestartete Anwendung verweist. Die meisten Anwendungen müssen diesen Wert nicht festlegen.
Dieses Flag kann nicht mit STARTF_TITLEISAPPID verwendet werden. |
|
Die Befehlszeile stammt aus einer nicht vertrauenswürdigen Quelle. Weitere Informationen finden Sie in den Hinweisen. |
|
Die Elemente dwXCountChars und dwYCountChars enthalten zusätzliche Informationen. |
|
Das dwFillAttribute-Element enthält zusätzliche Informationen. |
|
Das hStdInput-Element enthält zusätzliche Informationen.
Dieses Flag kann nicht mit STARTF_USESTDHANDLES verwendet werden. |
|
Die Elemente dwX und dwY enthalten zusätzliche Informationen. |
|
Das wShowWindow-Element enthält zusätzliche Informationen. |
|
Die Elemente dwXSize und dwYSize enthalten zusätzliche Informationen. |
|
Die Mitglieder hStdInput, hStdOutput und hStdError enthalten zusätzliche Informationen.
Wenn dieses Flag beim Aufrufen einer der Prozesserstellungsfunktionen angegeben wird, müssen die Handles vererbt werden können, und der bInheritHandles-Parameter der Funktion muss auf TRUE festgelegt werden. Weitere Informationen finden Sie unter Behandeln der Vererbung. Wenn dieses Flag beim Aufrufen der GetStartupInfo-Funktion angegeben wird, sind diese Member entweder der während der Prozesserstellung angegebene Handle-Wert oder INVALID_HANDLE_VALUE. Griffe müssen mit CloseHandle geschlossen werden, wenn sie nicht mehr benötigt werden. Dieses Flag kann nicht mit STARTF_USEHOTKEY verwendet werden. |
wShowWindow
Wenn dwFlags STARTF_USESHOWWINDOW angibt, kann es sich bei diesem Member um einen der Werte handeln, die im nCmdShow-Parameter für die ShowWindow-Funktion angegeben werden können, mit Ausnahme von SW_SHOWDEFAULT. Andernfalls wird dieser Member ignoriert.
Bei GUI-Prozessen wird der nCmdShow-Parameter beim ersten Aufruf von ShowWindow ignoriert. wShowWindow gibt den Standardwert an. Bei nachfolgenden Aufrufen von ShowWindow wird das wShowWindow-Element verwendet, wenn der nCmdShow-Parameter von ShowWindow auf SW_SHOWDEFAULT festgelegt ist.
cbReserved2
Reserviert für die Verwendung durch die C-Laufzeit; muss null sein.
lpReserved2
Reserviert für die Verwendung durch die C-Laufzeit; muss NULL sein.
hStdInput
Wenn dwFlags STARTF_USESTDHANDLES angibt, ist dieses Element das Standardeingabehandle für den Prozess. Wenn STARTF_USESTDHANDLES nicht angegeben ist, ist die Standardeingabe der Tastaturpuffer.
Wenn dwFlags STARTF_USEHOTKEY angibt, gibt dieses Element einen Hotkeywert an, der als wParam-Parameter einer WM_SETHOTKEY Nachricht an das erste berechtigte Fenster der obersten Ebene gesendet wird, das von der Anwendung erstellt wurde, die den Prozess besitzt. Wenn das Fenster mit der WS_POPUP Fensterstil erstellt wird, ist es nicht berechtigt, es sei denn, die WS_EX_APPWINDOW erweiterten Fensterstil ist ebenfalls festgelegt. Weitere Informationen finden Sie unter CreateWindowEx.
Andernfalls wird dieser Member ignoriert.
hStdOutput
Wenn dwFlags STARTF_USESTDHANDLES angibt, ist dieses Element das Standardausgabehandle für den Prozess. Andernfalls wird dieses Element ignoriert, und der Standard für die Standardausgabe ist der Puffer des Konsolenfensters.
Wenn ein Prozess über die Taskleiste oder Sprungliste gestartet wird, legt das System hStdOutput auf ein Handle für den Monitor fest, der die Taskleiste oder Sprungliste enthält, die zum Starten des Prozesses verwendet wird. Weitere Informationen finden Sie unter Hinweise. Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP und Windows Server 2003: Dieses Verhalten wurde in Windows 8 und Windows Server 2012 eingeführt.
hStdError
Wenn dwFlags STARTF_USESTDHANDLES angibt, ist dieses Element das Standardfehlerhandle für den Prozess. Andernfalls wird dieser Member ignoriert, und der Standardfehler ist der Puffer des Konsolenfensters.
Hinweise
Bei grafischen Benutzeroberflächesprozessen (GUI) wirken sich diese Informationen auf das erste Fenster aus, das von der CreateWindow-Funktion erstellt und von der ShowWindow-Funktion angezeigt wird. Bei Konsolenprozessen wirken sich diese Informationen auf das Konsolenfenster aus, wenn eine neue Konsole für den Prozess erstellt wird. Ein Prozess kann die GetStartupInfo-Funktion verwenden, um die STARTUPINFO-Struktur abzurufen, die beim Erstellen des Prozesses angegeben wurde.
Wenn ein GUI-Prozess gestartet wird und weder STARTF_FORCEONFEEDBACK noch STARTF_FORCEOFFFEEDBACK angegeben wird, wird der Prozessfeedbackcursor verwendet. Ein GUI-Prozess ist ein Prozess, dessen Subsystem als "Windows" angegeben wird.
Wenn ein Prozess über die Taskleiste oder Sprungliste gestartet wird, legt das System GetStartupInfo fest, um die STARTUPINFO-Struktur abzurufen und zu überprüfen, ob hStdOutput festgelegt ist. Verwenden Sie in diesem Fall GetMonitorInfo , um zu überprüfen, ob hStdOutput ein gültiges Monitorhandle (HMONITOR) ist. Der Prozess kann dann den Handle verwenden, um seine Fenster zu positionieren.
Wenn das STARTF_UNTRUSTEDSOURCE-Flag angegeben ist, sollte die Anwendung beachten, dass die Befehlszeile nicht vertrauenswürdig ist. Wenn dieses Flag festgelegt ist, sollten Anwendungen potenziell gefährliche Features wie Makros, heruntergeladene Inhalte und automatisches Drucken deaktivieren. Dieses Flag ist optional. Anwendungen, die CreateProcess aufrufen, werden empfohlen, dieses Flag festzulegen, wenn sie ein Programm mit nicht vertrauenswürdigen Befehlszeilenargumenten (z. B. von Webinhalten bereitgestellten) starten, damit der neu erstellte Prozess eine entsprechende Richtlinie anwenden kann.
Das STARTF_UNTRUSTEDSOURCE-Flag wird ab Windows Vista unterstützt, ist aber nicht in den SDK-Headerdateien vor dem Windows 10 SDK definiert. Um das Flag in Versionen vor Windows 10 zu verwenden, können Sie es manuell in Ihrem Programm definieren.
Beispiele
Das folgende Codebeispiel zeigt die Verwendung von 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 );
}
Weitere Informationen zu diesem Beispiel finden Sie unter Erstellen von Prozessen.
Hinweis
Der header processthreadsapi.h definiert STARTUPINFO als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | processthreadsapi.h (einschließlich Windows.h unter Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |