Struttura STARTUPINFOA (processthreadsapi.h)
Specifica la stazione della finestra, il desktop, gli handle standard e l'aspetto della finestra principale per un processo in fase di creazione.
Sintassi
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;
Membri
cb
Dimensione della struttura, in byte.
lpReserved
Riservato; deve essere NULL.
lpDesktop
Nome del desktop o del nome sia della stazione desktop che della finestra per questo processo. Una barra rovesciata nella stringa indica che la stringa include sia i nomi della stazione desktop che della finestra.
Per altre informazioni, vedere Connessione thread a undesktop.
lpTitle
Per i processi della console, questo è il titolo visualizzato nella barra del titolo se viene creata una nuova finestra della console. Se NULL, il nome del file eseguibile viene invece usato come titolo della finestra. Questo parametro deve essere NULL per i processi gui o console che non creano una nuova finestra della console.
dwX
Se dwFlags specifica STARTF_USEPOSITION, questo membro corrisponde all'offset x dell'angolo superiore sinistro di una finestra se viene creata una nuova finestra, in pixel. In caso contrario, questo membro viene ignorato.
L'offset si trova nell'angolo superiore sinistro dello schermo. Per i processi GUI, la posizione specificata viene usata la prima volta che il nuovo processo chiama CreateWindow per creare una finestra sovrapposta se il parametro x di CreateWindow è CW_USEDEFAULT.
dwY
Se dwFlags specifica STARTF_USEPOSITION, questo membro corrisponde all'offset y dell'angolo superiore sinistro di una finestra se viene creata una nuova finestra, in pixel. In caso contrario, questo membro viene ignorato.
L'offset si trova nell'angolo superiore sinistro dello schermo. Per i processi GUI, la posizione specificata viene usata la prima volta che il nuovo processo chiama CreateWindow per creare una finestra sovrapposta se il parametro y di CreateWindow è CW_USEDEFAULT.
dwXSize
Se dwFlags specifica STARTF_USESIZE, questo membro corrisponde alla larghezza della finestra se viene creata una nuova finestra, in pixel. In caso contrario, questo membro viene ignorato.
Per i processi GUI, viene usata solo la prima volta che il nuovo processo chiama CreateWindow per creare una finestra sovrapposta se il parametro nWidth di CreateWindow è CW_USEDEFAULT.
dwYSize
Se dwFlags specifica STARTF_USESIZE, questo membro corrisponde all'altezza della finestra se viene creata una nuova finestra, in pixel. In caso contrario, questo membro viene ignorato.
Per i processi GUI, viene usata solo la prima volta che il nuovo processo chiama
dwXCountChars
Se dwFlags specifica STARTF_USECOUNTCHARS, se viene creata una nuova finestra della console in un processo della console, questo membro specifica la larghezza del buffer dello schermo, nelle colonne di caratteri. In caso contrario, questo membro viene ignorato.
dwYCountChars
Se dwFlags specifica STARTF_USECOUNTCHARS, se viene creata una nuova finestra della console in un processo della console, questo membro specifica l'altezza del buffer dello schermo, nelle righe di caratteri. In caso contrario, questo membro viene ignorato.
dwFillAttribute
Se dwFlags specifica STARTF_USEFILLATTRIBUTE, questo membro corrisponde al testo iniziale e ai colori di sfondo se viene creata una nuova finestra della console in un'applicazione console. In caso contrario, questo membro viene ignorato.
Questo valore può essere qualsiasi combinazione dei valori seguenti: FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED e BACKGROUND_INTENSITY. Ad esempio, la combinazione di valori seguente produce testo rosso su uno sfondo bianco:
FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE
dwFlags
Campo di bit che determina se determinati MEMBRI STARTUPINFO vengono utilizzati quando il processo crea una finestra. Questo membro può essere uno o più dei valori seguenti.
Valore | Significato |
---|---|
|
Indica che il cursore è in modalità feedback per due secondi dopo la chiamata di CreateProcess. Viene visualizzato il cursore Working in Background (vedere la scheda Puntatori nell'utilità Pannello di controllo mouse).
Se durante questi due secondi il processo effettua la prima chiamata GUI, il sistema fornisce cinque secondi al processo. Se durante questi cinque secondi il processo mostra una finestra, il sistema fornisce cinque secondi al processo per completare il disegno della finestra. Il sistema disattiva il cursore di feedback dopo la prima chiamata a GetMessage, indipendentemente dal fatto che il processo sia di disegno. |
|
Indica che il cursore di feedback è stato forzato durante l'avvio del processo. Viene visualizzato il cursore Normal Select. |
|
Indica che non è possibile aggiungere finestre create dal processo sulla barra delle applicazioni.
Questo flag deve essere combinato con STARTF_TITLEISAPPID. |
|
Indica che il processo deve essere eseguito in modalità schermo intero anziché in modalità finestra.
Questo flag è valido solo per le applicazioni console in esecuzione in un computer x86. |
|
Il membro lpTitle Se si usa STARTF_PREVENTPINNING, le finestre dell'applicazione non possono essere aggiunte sulla barra delle applicazioni. L'uso di qualsiasi proprietà della finestra correlata ad AppUserModelID dall'applicazione esegue l'override di questa impostazione solo per tale finestra. Questo flag non può essere usato con STARTF_TITLEISLINKNAME. |
|
Il membro lpTitle Questo flag non può essere usato con STARTF_TITLEISAPPID. |
|
La riga di comando proviene da un'origine non attendibile. Per altre informazioni, vedere Osservazioni. |
|
I membri |
|
Il membro dwFillAttribute |
|
Il membro hStdInput Questo flag non può essere usato con STARTF_USESTDHANDLES. |
|
I membri |
|
Il membro wShowWindow |
|
I membri dwXSize |
|
I membri hStdInput, hStdOutpute hStdError contengono informazioni aggiuntive.
Se questo flag viene specificato quando si chiama una delle funzioni di creazione del processo, gli handle devono essere ereditabili e il bInheritHandles parametro deve essere impostato su TRUE. Per altre informazioni, vedere Gestire l'ereditarietà. Se questo flag viene specificato quando si chiama la funzione GetStartupInfo Gli handle devono essere chiusi con CloseHandle quando non sono più necessari. Questo flag non può essere usato con STARTF_USEHOTKEY. |
wShowWindow
Se dwFlags specifica STARTF_USESHOWWINDOW, questo membro può essere uno qualsiasi dei valori che possono essere specificati nel parametro nCmdShow per la funzione ShowWindow, ad eccezione di SW_SHOWDEFAULT. In caso contrario, questo membro viene ignorato.
Per i processi GUI, la prima volta che viene chiamato ShowWindow, il relativo parametro nCmdShow viene ignorato wShowWindow specifica il valore predefinito. Nelle chiamate successive a ShowWindow, il membro wShowWindow viene usato se il parametro nCmdShow di ShowWindow è impostato su SW_SHOWDEFAULT.
cbReserved2
Riservato per l'uso da parte del runtime C; deve essere zero.
lpReserved2
Riservato per l'uso da parte del runtime C; deve essere NULL.
hStdInput
Se dwFlags specifica STARTF_USESTDHANDLES, questo membro è l'handle di input standard per il processo. Se non viene specificato STARTF_USESTDHANDLES, il valore predefinito per l'input standard è il buffer della tastiera.
Se dwFlags specifica STARTF_USEHOTKEY, questo membro specifica un valore di tasti di scelta rapida inviato come parametro wParam di un messaggio di WM_SETHOTKEY alla prima finestra di primo livello idonea creata dall'applicazione proprietaria del processo. Se la finestra viene creata con lo stile della finestra WS_POPUP, non è idonea a meno che non sia impostato anche lo stile della finestra estesa WS_EX_APPWINDOW. Per altre informazioni, vedere CreateWindowEx.
In caso contrario, questo membro viene ignorato.
hStdOutput
Se dwFlags specifica STARTF_USESTDHANDLES, questo membro è l'handle di output standard per il processo. In caso contrario, questo membro viene ignorato e il valore predefinito per l'output standard è il buffer della finestra della console.
Se un processo viene avviato dalla barra delle applicazioni o dalla jump list, il sistema imposta hStdOutput su un handle per il monitor che contiene la barra delle applicazioni o la jump list usata per avviare il processo. Per altre informazioni, vedere Osservazioni.Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP e Windows Server 2003: Questo comportamento è stato introdotto in Windows 8 e Windows Server 2012.
hStdError
Se dwFlags specifica STARTF_USESTDHANDLES, questo membro è l'handle di errore standard per il processo. In caso contrario, questo membro viene ignorato e il valore predefinito per l'errore standard è il buffer della finestra della console.
Osservazioni
Per i processi dell'interfaccia utente grafica (GUI), queste informazioni influiscono sulla prima finestra creata dalla funzione CreateWindow e visualizzata dalla funzione ShowWindow. Per i processi della console, queste informazioni influiscono sulla finestra della console se viene creata una nuova console per il processo. Un processo può usare la funzione
Se viene avviato un processo GUI e non viene specificato alcun STARTF_FORCEONFEEDBACK o STARTF_FORCEOFFFEEDBACK, viene usato il cursore di feedback del processo. Un processo GUI è uno il cui sottosistema è specificato come "windows".
Se un processo viene avviato dalla barra delle applicazioni o dalla jump list, il sistema imposta
Se viene specificato il flag STARTF_UNTRUSTEDSOURCE, l'applicazione deve tenere presente che la riga di comando non è attendibile. Se questo flag è impostato, le applicazioni devono disabilitare funzionalità potenzialmente pericolose, ad esempio macro, contenuto scaricato e stampa automatica. Questo flag è facoltativo, ma le applicazioni che chiamano CreateProcess sono incoraggiate a impostare questo flag quando si avvia un programma con argomenti della riga di comando non attendibili ,ad esempio quelli forniti dal contenuto Web, in modo che il processo appena creato possa applicare i criteri appropriati.
Il flag STARTF_UNTRUSTEDSOURCE è supportato a partire da Windows Vista, ma non è definito nei file di intestazione dell'SDK prima di Windows 10 SDK. Per usare il flag nelle versioni precedenti a Windows 10, puoi definirlo manualmente nel programma.
Esempi
Nell'esempio di codice seguente viene illustrato l'uso di 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 );
}
Per altre informazioni su questo esempio, vedere Creazione di processi.
Nota
L'intestazione processthreadsapi.h definisce STARTUPINFO come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.
Fabbisogno
Requisito | Valore |
---|---|
client minimo supportato | Windows XP [solo app desktop] |
server minimo supportato | Windows Server 2003 [solo app desktop] |
intestazione |
processthreadsapi.h (include Windows.h in Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |