STARTUPINFOA-Struktur (processthreadsapi.h)

Gibt die Fensterstation, Desktop, Standardhandpunkte und Darstellung 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;

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 Rückstrich in der Zeichenfolge gibt an, dass die Zeichenfolge sowohl die Namen des Desktops als auch der Fensterstationsnamen enthält.

Weitere Informationen finden Sie unter Threadverbindung zu 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 aus 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 überlappenes 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 in Pixel erstellt wird. Andernfalls wird dieses Element ignoriert.

Der Offset befindet sich aus 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 überlappenes 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 dieses Element ignoriert.

Bei GUI-Prozessen wird dies nur zum ersten Mal verwendet, wenn der neue Prozess CreateWindow aufruft, um ein überlappenes Fenster zu erstellen, wenn der Parameter "nWidth " von CreateWindow CW_USEDEFAULT ist.

dwYSize

Wenn dwFlags STARTF_USESIZE angibt, ist dieses Element die Höhe des Fensters, wenn ein neues Fenster erstellt wird, in Pixeln. Andernfalls wird dieses Element ignoriert.

Bei GUI-Prozessen wird dies nur zum ersten Mal verwendet, wenn der neue Prozess CreateWindow aufruft, um ein überlappenes Fenster zu erstellen, wenn der nHeight-Parameter von CreateWindow CW_USEDEFAULT ist.

dwXCountChars

Wenn dwFlags STARTF_USECOUNTCHARS angibt, wenn ein neues Konsolenfenster in einem Konsolenprozess erstellt wird, gibt dieses Element die Bildschirmpufferbreite in Zeichenspalten an. Andernfalls wird dieses Element ignoriert.

dwYCountChars

Wenn dwFlags STARTF_USECOUNTCHARS angibt, wenn ein neues Konsolenfenster in einem Konsolenprozess erstellt wird, gibt dieses Element die Bildschirmpufferhöhe in Zeichenzeilen an. Andernfalls wird dieses Element ignoriert.

dwFillAttribute

Wenn dwFlags STARTF_USEFILLATTRIBUTE angibt, ist dieses Element die anfänglichen Text- und Hintergrundfarben, wenn ein neues Konsolenfenster in einer Konsolenanwendung erstellt wird. Andernfalls wird dieses Element ignoriert.

Dieser Wert kann eine beliebige Kombination aus den folgenden Werten sein: FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED und BACKGROUND_INTENSITY. Beispielsweise erzeugt die folgende Kombination von Werten roter Text auf einem weißen Hintergrund:

FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE

dwFlags

Ein Bitfeld, das bestimmt, ob bestimmte STARTUPINFO-Elemente verwendet werden, wenn der Prozess ein Fenster erstellt. Dieses Element kann eine oder mehrere der folgenden Werte sein.

Wert Bedeutung
STARTF_FORCEONFEEDBACK
0x00000040
Gibt an, dass sich der Cursor im Feedbackmodus für zwei Sekunden befindet, nachdem CreateProcess aufgerufen wird. 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 macht, gibt das System fünf Sekunden mehr Sekunden zum Prozess. Wenn während dieser fünf Sekunden der Prozess ein Fenster anzeigt, gibt das System fünf Sekunden mehr Sekunden zum Abschluss des Zeichnens des Fensters.

Das System deaktiviert den Feedbackcursor nach dem ersten Aufruf von GetMessage, unabhängig davon, ob der Prozess gezeichnet wird.

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 von dem Prozess erstellte Fenster nicht auf der Taskleiste angeheftet werden können.

Diese Kennzeichnung 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 das Taskleisten- und Startmenü die Anwendung darstellt, und ermöglicht es, mit den richtigen Verknüpfungen und Sprunglisten verknüpft zu werden. In der Regel 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 beliebiger AppUserModelID-verwandter 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), auf die der Benutzer aufgerufen hat, um diesen Prozess zu starten. Dies wird in der Regel von der Shell festgelegt, wenn eine LNK-Datei 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 dwX - und dwY-Elemente 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 hStdInput-, hStdOutput- und hStdError-Elemente enthalten zusätzliche Informationen.

Wenn dieses Flag beim Aufrufen einer der Prozesserstellungsfunktionen angegeben wird, müssen die Handle vererbbar sein, und der bInheritHandles-Parameter der Funktion muss auf TRUE festgelegt werden. Weitere Informationen finden Sie unter Handle 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 wird.

Ziehpunkte müssen mit CloseHandle geschlossen werden, wenn sie nicht mehr benötigt werden.

Dieses Kennzeichen kann nicht mit STARTF_USEHOTKEY verwendet werden.

wShowWindow

Wenn dwFlags STARTF_USESHOWWINDOW angibt, kann dieses Element eine der Werte sein, die im Parameter nCmdShow für die ShowWindow-Funktion angegeben werden können, außer für SW_SHOWDEFAULT. Andernfalls wird dieses Element ignoriert.

Bei GUI-Prozessen wird der erste Aufruf von ShowWindow durch den nCmdShow-Parameter ignoriert , wShowWindow gibt den Standardwert an. In 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 der Standardeingabepunkt für den Prozess. Wenn STARTF_USESTDHANDLES nicht angegeben ist, ist der Standard für 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 erweiterten Fensterformats wird 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 aus der 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 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 der Standardfehlerpunkt für den Prozess. Andernfalls wird dieses Element ignoriert, und der Standardfehler ist der Puffer des Konsolenfensters.

Bemerkungen

Für grafische Benutzeroberflächenprozesse (GUI) wirkt sich diese Information auf das erste Fenster aus, das von der Funktion CreateWindow erstellt und von der ShowWindow-Funktion angezeigt wird. Bei Konsolenprozessen wirkt sich diese Information 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 aus der Taskleiste oder Sprungliste gestartet wird, legt das System GetStartupInfo fest, um die STARTUPINFO-Struktur abzurufen und zu überprüfen, ob hStdOutput festgelegt ist. Wenn ja, verwenden Sie GetMonitorInfo , um zu überprüfen, ob hStdOutput ein gültiger Monitorhandpunkt (HMONITOR) ist. Anschließend kann der Prozess 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 Kennzeichen 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, wird jedoch nicht in den SDK-Headerdateien vor dem Windows 10 SDK definiert. Um das Kennzeichen 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.

Hinweis

Der Header "processthreadsapi.h" 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 codierungsneutralen Aliase mit Code, der nicht codierungsneutral ist, kann zu Übereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

   
Unterstützte Mindestversion (Client) Windows XP [Nur Desktop-Apps]
Unterstützte Mindestversion (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)

Siehe auch

CreateProcess

CreateProcessAsUser

CreateProcessWithLogonW

CreateProcessWithTokenW

GetStartupInfo