STARTUPINFOA-Struktur (processthreadsapi.h)
Gibt die Fensterstation, den Desktop, die Standardziehpunkte und das Erscheinungsbild des Hauptfensters für einen Prozess zur Erstellungszeit an.
Syntax
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;
Angehörige
cb
Die Größe der Struktur in Byte.
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 Desktop- als auch die Fensterstationsnamen enthält.
Weitere Informationen finden Sie unter Threadverbindung mit einem Desktop-.
lpTitle
Bei Konsolenprozessen wird der Titel in der Titelleiste angezeigt, wenn ein neues Konsolenfenster erstellt wird. Wenn NULL, wird der Name der ausführbaren Datei stattdessen 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 in Pixel erstellt wird. Andernfalls wird dieses Element ignoriert.
Der Offset befindet sich von der oberen linken Ecke des Bildschirms. Bei GUI-Prozessen wird die angegebene Position zum ersten Mal verwendet, wenn der neue Prozess CreateWindow aufruft, um ein überlappende Fenster zu erstellen, wenn der parameter x 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 dieses Element ignoriert.
Der Offset befindet sich von der oberen linken Ecke des Bildschirms. Bei GUI-Prozessen wird die angegebene Position verwendet, wenn der neue Prozess zum ersten Mal CreateWindow 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 in Pixel erstellt wird. Andernfalls wird dieses Element ignoriert.
Bei GUI-Prozessen wird dies nur verwendet, wenn der neue Prozess zum ersten Mal CreateWindow 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 dieses Element ignoriert.
Bei GUI-Prozessen wird dies nur verwendet, wenn der neue Prozess zum ersten Mal CreateWindow aufruft, um ein überlappende Fenster zu erstellen, wenn der nHeight Parameter von CreateWindow CW_USEDEFAULT ist.
dwXCountChars
Wenn dwFlags- STARTF_USECOUNTCHARS angibt, wenn in einem Konsolenprozess ein neues Konsolenfenster erstellt wird, gibt dieses Element die Bildschirmpufferbreite in Zeichenspalten an. Andernfalls wird dieses Element ignoriert.
dwYCountChars
Wenn dwFlags- STARTF_USECOUNTCHARS angibt, wenn in einem Konsolenprozess ein neues Konsolenfenster erstellt wird, gibt dieses Element die Bildschirmpufferhöhe in Zeichenzeilen an. Andernfalls wird dieses Element ignoriert.
dwFillAttribute
Wenn dwFlags STARTF_USEFILLATTRIBUTE angibt, handelt es sich bei diesem Element um den anfänglichen Text und hintergrundfarben, wenn in einer Konsolenanwendung ein neues Konsolenfenster erstellt wird. Andernfalls wird dieses Element 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 Wertekombination erzeugt beispielsweise roten Text auf einem weißen 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 Element kann es sich um einen oder mehrere der folgenden Werte handeln.
Wert | Bedeutung |
---|---|
|
Gibt an, dass sich der Cursor zwei Sekunden lang im Feedbackmodus befindet, nachdem CreateProcess aufgerufen wurde. Der Cursor "Arbeiten im Hintergrund" wird angezeigt (siehe die Registerkarte "Zeiger" im Hilfsprogramm für die Maussteuerung).
Wenn der Prozess während dieser zwei Sekunden den ersten GUI-Aufruf vorgibt, gibt das System dem Prozess fünf weitere Sekunden. Wenn während dieser fünf Sekunden ein Fenster angezeigt wird, gibt das System dem Prozess fünf weitere Sekunden, um die Zeichnung des Fensters abzuschließen. Das System schaltet den Feedbackcursor nach dem ersten Aufruf von GetMessageaus, unabhängig davon, ob der Prozess gezeichnet wird. |
|
Gibt an, dass der Feedbackcursor beim Starten des Prozesses erzwungen wird. Der Cursor "Normalauswahl" wird angezeigt. |
|
Gibt an, dass alle vom Prozess erstellten Fenster nicht auf der Taskleiste angeheftet werden können.
Diese Kennzeichnung muss mit STARTF_TITLEISAPPID kombiniert werden. |
|
Gibt an, dass der Prozess nicht im Fenstermodus, sondern im Vollbildmodus ausgeführt werden soll.
Dieses Kennzeichen ist nur für Konsolenanwendungen gültig, die auf einem x86-Computer ausgeführt werden. |
|
Der lpTitle Member enthält eine AppUserModelID. Dieser Bezeichner steuert, wie die Taskleiste und Startmenü die Anwendung darstellen, und ermöglicht die Zuordnung zu den richtigen Tastenkombinationen und Sprunglisten. Im Allgemeinen verwenden Anwendungen die SetCurrentProcessExplicitAppUserModelID und GetCurrentProcessExplicitAppUserModelID Funktionen, 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 setzt diese Einstellung nur für dieses Fenster außer Kraft. Dieses Flag kann nicht mit STARTF_TITLEISLINKNAME verwendet werden. |
|
Der lpTitle Member 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, die auf die gestartete Anwendung verweist, aufgerufen wird. 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 dwXCountChars und dwYCountChars Member enthalten zusätzliche Informationen. |
|
Das dwFillAttribute Member enthält zusätzliche Informationen. |
|
Das hStdInput Member enthält zusätzliche Informationen.
Dieses Flag kann nicht mit STARTF_USESTDHANDLESverwendet werden. |
|
Die dwX- und dwY- Elemente enthalten zusätzliche Informationen. |
|
Das wShowWindow Member enthält zusätzliche Informationen. |
|
Die dwXSize und dwYSize Member enthalten zusätzliche Informationen. |
|
Die hStdInput-, hStdOutput-und hStdError- Member enthalten zusätzliche Informationen.
Wenn dieses Flag beim Aufrufen einer der Prozesserstellungsfunktionen angegeben wird, müssen die Handles vererbbar sein, und die bInheritHandles Parameter muss auf TRUE festgelegt werden. Weitere Informationen finden Sie unter Behandeln von Vererbung. Wenn dieses Flag beim Aufrufen der GetStartupInfo--Funktion angegeben wird, sind diese Member entweder der Handlewert, der während der Prozesserstellung oder INVALID_HANDLE_VALUE angegeben ist. Ziehpunkte müssen mit CloseHandle- geschlossen werden, wenn sie nicht mehr benötigt werden. Dieses Flag kann nicht mit STARTF_USEHOTKEYverwendet werden. |
wShowWindow
Wenn dwFlags- STARTF_USESHOWWINDOW angibt, kann es sich 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 dieses Element ignoriert.
Bei GUI-Prozessen wird beim ersten Aufruf ShowWindow- der nCmdShow Parameter ignoriert, wShowWindow den Standardwert angibt. In nachfolgenden Aufrufen von ShowWindow-wird das wShowWindow Member 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 der 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 Hotkey-Wert an, der als wParam Parameter einer WM_SETHOTKEY Nachricht an das erste berechtigte Fenster der obersten Ebene gesendet wird, das von der Anwendung erstellt wird, die den Prozess besitzt. Wenn das Fenster mit der WS_POPUP Fensterformatvorlage erstellt wird, ist es nicht berechtigt, es sei denn, die WS_EX_APPWINDOW erweiterte Fensterformatvorlage ist ebenfalls festgelegt. Weitere Informationen finden Sie unter CreateWindowEx.
Andernfalls wird dieses Element ignoriert.
hStdOutput
Wenn dwFlags- STARTF_USESTDHANDLES angibt, ist dieses Element der Standardausgabepunkt für den Prozess. Andernfalls wird dieses Element ignoriert, und die Standardausgabe ist der Puffer des Konsolenfensters.
Wenn ein Prozess über die Taskleiste oder Sprungliste gestartet wird, legt das System hStdOutput auf einen Handle auf den Monitor fest, der die Taskleiste oder Sprungliste enthält, die zum Starten des Prozesses verwendet wird. Weitere Informationen finden Sie in den Hinweisen.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 dieses Element ignoriert, und der Standardfehler ist der Puffer des Konsolenfensters.
Bemerkungen
Bei GUI-Prozessen (Grafische Benutzeroberfläche) wirkt sich diese Information 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 "Fenster" 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ültiger Monitorhandle (HMONITOR) ist. Der Prozess kann dann den Ziehpunkt 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 Kennzeichen festgelegt ist, sollten Anwendungen potenziell gefährliche Features wie Makros, heruntergeladene Inhalte und automatisches Drucken deaktivieren. Dieses Flag ist optional, aber Anwendungen, die CreateProcess- aufrufen, werden empfohlen, dieses Kennzeichen festzulegen, wenn ein Programm mit nicht vertrauenswürdigen Befehlszeilenargumenten (z. B. von Webinhalten bereitgestellt) gestartet wird, damit der neu erstellte Prozess geeignete Richtlinien anwenden kann.
Das STARTF_UNTRUSTEDSOURCE Flag wird ab Windows Vista unterstützt, ist jedoch nicht in den SDK-Headerdateien vor dem Windows 10 SDK definiert. Um die Kennzeichnung in Versionen vor Windows 10 zu verwenden, können Sie es manuell in Ihrem Programm definieren.
Beispiele
Das folgende Codebeispiel zeigt die Verwendung von 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 );
}
Weitere Informationen zu diesem Beispiel finden Sie unter Erstellen von Prozessen.
Anmerkung
Der Processthreadsapi.h-Header definiert STARTUPINFO als Alias, der automatisch die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit Code, der nicht codierungsneutral ist, 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 |
---|---|
mindestens unterstützte Client- | Windows XP [nur Desktop-Apps] |
mindestens unterstützte Server- | Windows Server 2003 [Nur Desktop-Apps] |
Header- | processthreadsapi.h (include Windows.h on Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |