Freigeben über


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
STARTF_FORCEONFEEDBACK
0x00000040
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.

STARTF_FORCEOFFFEEDBACK
0x00000080
Gibt an, dass der Feedback-Cursor deaktiviert wird, während der Prozess gestartet wird. Der Cursor für die normale Auswahl wird angezeigt.
STARTF_PREVENTPINNING
0x00002000
Gibt an, dass vom Prozess erstellte Fenster nicht auf der Taskleiste angeheftet werden können.

Dieses Flag muss mit STARTF_TITLEISAPPID kombiniert werden.

STARTF_RUNFULLSCREEN
0x00000020
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.

STARTF_TITLEISAPPID
0x00001000
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.

STARTF_TITLEISLINKNAME
0x00000800
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.

STARTF_UNTRUSTEDSOURCE
0x00008000
Die Befehlszeile stammt aus einer nicht vertrauenswürdigen Quelle. Weitere Informationen finden Sie in den Hinweisen.
STARTF_USECOUNTCHARS
0x00000008
Die Elemente dwXCountChars und dwYCountChars enthalten zusätzliche Informationen.
STARTF_USEFILLATTRIBUTE
0x00000010
Das dwFillAttribute-Element enthält zusätzliche Informationen.
STARTF_USEHOTKEY
0x00000200
Das hStdInput-Element enthält zusätzliche Informationen.

Dieses Flag kann nicht mit STARTF_USESTDHANDLES verwendet werden.

STARTF_USEPOSITION
0x00000004
Die Elemente dwX und dwY enthalten zusätzliche Informationen.
STARTF_USESHOWWINDOW
0x00000001
Das wShowWindow-Element enthält zusätzliche Informationen.
STARTF_USESIZE
0x00000002
Die Elemente dwXSize und dwYSize enthalten zusätzliche Informationen.
STARTF_USESTDHANDLES
0x00000100
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)

Weitere Informationen

CreateProcess

CreateProcessAsUser

CreateProcessWithLogonW

CreateProcessWithTokenW

GetStartupInfo