Estrutura STARTUPINFOA (processthreadsapi.h)
Especifica a estação de janela, a área de trabalho, os identificadores padrão e a aparência da janela principal para um processo no momento da criação.
Sintaxe
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;
Membros
cb
O tamanho da estrutura, em bytes.
lpReserved
Reservado; deve ser NULL.
lpDesktop
O nome da área de trabalho ou o nome da área de trabalho e da estação de janela para esse processo. Uma barra invertida na cadeia de caracteres indica que a cadeia de caracteres inclui os nomes da área de trabalho e da estação de janela.
Para obter mais informações, consulte Conexão de Thread com umda Área de Trabalho.
lpTitle
Para processos de console, esse é o título exibido na barra de título se uma nova janela do console for criada. Se NULL, o nome do arquivo executável será usado como o título da janela. Esse parâmetro deve ser NULL para processos de GUI ou console que não criam uma nova janela de console.
dwX
Se dwFlags especificar STARTF_USEPOSITION, esse membro será o deslocamento x do canto superior esquerdo de uma janela se uma nova janela for criada, em pixels. Caso contrário, esse membro será ignorado.
O deslocamento é do canto superior esquerdo da tela. Para processos de GUI, a posição especificada é usada na primeira vez que o novo processo chama CreateWindow para criar uma janela sobreposta se o parâmetro x de CreateWindow estiver CW_USEDEFAULT.
dwY
Se dwFlags especificar STARTF_USEPOSITION, esse membro será o deslocamento y do canto superior esquerdo de uma janela se uma nova janela for criada, em pixels. Caso contrário, esse membro será ignorado.
O deslocamento é do canto superior esquerdo da tela. Para processos de GUI, a posição especificada é usada na primeira vez que o novo processo chama CreateWindow para criar uma janela sobreposta se o parâmetro y de CreateWindow for CW_USEDEFAULT.
dwXSize
Se dwFlags especificar STARTF_USESIZE, esse membro será a largura da janela se uma nova janela for criada, em pixels. Caso contrário, esse membro será ignorado.
Para processos de GUI, isso é usado apenas na primeira vez que o novo processo chama
dwYSize
Se dwFlags especificar STARTF_USESIZE, esse membro será a altura da janela se uma nova janela for criada, em pixels. Caso contrário, esse membro será ignorado.
Para processos de GUI, isso é usado apenas na primeira vez que o novo processo chama CreateWindow para criar uma janela sobreposta se o parâmetro nHeight de CreateWindow estiver CW_USEDEFAULT.
dwXCountChars
Se dwFlags especificar STARTF_USECOUNTCHARS, se uma nova janela de console for criada em um processo de console, esse membro especifica a largura do buffer de tela, em colunas de caracteres. Caso contrário, esse membro será ignorado.
dwYCountChars
Se dwFlags especificar STARTF_USECOUNTCHARS, se uma nova janela de console for criada em um processo de console, esse membro especifica a altura do buffer de tela, em linhas de caracteres. Caso contrário, esse membro será ignorado.
dwFillAttribute
Se dwFlags especificar STARTF_USEFILLATTRIBUTE, esse membro será o texto inicial e as cores da tela de fundo se uma nova janela de console for criada em um aplicativo de console. Caso contrário, esse membro será ignorado.
Esse valor pode ser qualquer combinação dos seguintes valores: FOREGROUND_BLUE, FOREGROUND_GREEN, FOREGROUND_RED, FOREGROUND_INTENSITY, BACKGROUND_BLUE, BACKGROUND_GREEN, BACKGROUND_RED e BACKGROUND_INTENSITY. Por exemplo, a seguinte combinação de valores produz texto vermelho em um plano de fundo branco:
FOREGROUND_RED| BACKGROUND_RED| BACKGROUND_GREEN| BACKGROUND_BLUE
dwFlags
Um campo de bits que determina se determinados membros STARTUPINFO são usados quando o processo cria uma janela. Esse membro pode ser um ou mais dos valores a seguir.
Valor | Significado |
---|---|
|
Indica que o cursor está no modo de comentários por dois segundos depois que CreateProcess é chamado. O cursor Trabalhando em Segundo Plano é exibido (consulte a guia Ponteiros no utilitário do painel de controle do Mouse).
Se durante esses dois segundos o processo fizer a primeira chamada de GUI, o sistema dará mais cinco segundos ao processo. Se durante esses cinco segundos o processo mostrar uma janela, o sistema dará mais cinco segundos ao processo para concluir o desenho da janela. O sistema desativa o cursor de comentários após a primeira chamada para GetMessage, independentemente de o processo ser desenhado. |
|
Indica que o cursor de comentários é forçado a sair enquanto o processo está sendo iniciado. O cursor Seleção Normal é exibido. |
|
Indica que as janelas criadas pelo processo não podem ser fixadas na barra de tarefas.
Esse sinalizador deve ser combinado com STARTF_TITLEISAPPID. |
|
Indica que o processo deve ser executado no modo de tela inteira, em vez de no modo de janela.
Esse sinalizador só é válido para aplicativos de console em execução em um computador x86. |
|
O membro lpTitle contém um AppUserModelID. Esse identificador controla como a barra de tarefas e menu Iniciar apresentar o aplicativo e permite que ele seja associado aos atalhos corretos e listas de salto. Em geral, os aplicativos usarão as funções SetCurrentProcessExplicitAppUserModelID e GetCurrentProcessExplicitAppUserModel ID em vez de definir esse sinalizador. Para obter mais informações, consulte IDs do modelo de usuário do aplicativo.
Se STARTF_PREVENTPINNING for usado, as janelas do aplicativo não poderão ser fixadas na barra de tarefas. O uso de quaisquer propriedades de janela relacionadas a AppUserModelID pelo aplicativo substitui essa configuração somente para essa janela. Esse sinalizador não pode ser usado com STARTF_TITLEISLINKNAME. |
|
O membro lpTitle contém o caminho do arquivo de atalho (.lnk) que o usuário invocou para iniciar esse processo. Isso normalmente é definido pelo shell quando um arquivo .lnk apontando para o aplicativo iniciado é invocado. A maioria dos aplicativos não precisará definir esse valor.
Esse sinalizador não pode ser usado com STARTF_TITLEISAPPID. |
|
A linha de comando veio de uma fonte não confiável. Para obter mais informações, consulte Comentários. |
|
Os membros |
|
O membro dwFillAttribute |
|
O membro Esse sinalizador não pode ser usado com STARTF_USESTDHANDLES. |
|
Os membros dwX |
|
O membro do wShowWindow contém informações adicionais. |
|
Os membros dwXSize e dwYSize contêm informações adicionais. |
|
Os membros hStdInput, hStdOutpute hStdError contêm informações adicionais.
Se esse sinalizador for especificado ao chamar uma das funções de criação do processo, os identificadores deverão ser herdáveis e o parâmetro bInheritHandles da função deverá ser definido como TRUE. Para obter mais informações, consulte manipularde herança. Se esse sinalizador for especificado ao chamar a função GetStartupInfo, esses membros serão o valor do identificador especificado durante a criação do processo ou INVALID_HANDLE_VALUE. Os identificadores devem ser fechados com CloseHandle quando não forem mais necessários. Esse sinalizador não pode ser usado com STARTF_USEHOTKEY. |
wShowWindow
Se
Para processos de GUI, na primeira vez que ShowWindow é chamado, seu parâmetro nCmdShow é ignorado wShowWindow especifica o valor padrão. Nas chamadas subsequentes para ShowWindow, o membro do wShowWindow será usado se o parâmetro nCmdShow de ShowWindow estiver definido como SW_SHOWDEFAULT.
cbReserved2
Reservado para uso pelo tempo de execução C; deve ser zero.
lpReserved2
Reservado para uso pelo tempo de execução C; deve ser NULL.
hStdInput
Se dwFlags especificar STARTF_USESTDHANDLES, esse membro será o identificador de entrada padrão para o processo. Se STARTF_USESTDHANDLES não for especificado, o padrão para entrada padrão será o buffer de teclado.
Se dwFlags especificar STARTF_USEHOTKEY, esse membro especifica um valor de chave de acesso que é enviado como o parâmetro wParam de uma mensagem de WM_SETHOTKEY para a primeira janela de nível superior qualificada criada pelo aplicativo que possui o processo. Se a janela for criada com o estilo de janela WS_POPUP, ela não será qualificada, a menos que o estilo de janela estendida WS_EX_APPWINDOW também esteja definido. Para obter mais informações, consulte CreateWindowEx.
Caso contrário, esse membro será ignorado.
hStdOutput
Se dwFlags especificar STARTF_USESTDHANDLES, esse membro será o identificador de saída padrão para o processo. Caso contrário, esse membro será ignorado e o padrão para a saída padrão será o buffer da janela do console.
Se um processo for iniciado na barra de tarefas ou na lista de saltos, o sistema definirá hStdOutput para um identificador para o monitor que contém a barra de tarefas ou a lista de saltos usada para iniciar o processo. Para obter mais informações, consulte Comentários.Windows 7, Windows Server 2008 R2, Windows Vista, Windows Server 2008, Windows XP e Windows Server 2003: Esse comportamento foi introduzido no Windows 8 e no Windows Server 2012.
hStdError
Se dwFlags especificar STARTF_USESTDHANDLES, esse membro será o identificador de erro padrão para o processo. Caso contrário, esse membro será ignorado e o padrão para erro padrão é o buffer da janela do console.
Observações
Para processos de GUI (interface gráfica do usuário), essas informações afetam a primeira janela criada pela função CreateWindow e mostradas pela função ShowWindow. Para processos de console, essas informações afetarão a janela do console se um novo console for criado para o processo. Um processo pode usar a função
Se um processo de GUI estiver sendo iniciado e nenhum STARTF_FORCEONFEEDBACK ou STARTF_FORCEOFFFEEDBACK for especificado, o cursor de comentários do processo será usado. Um processo de GUI é aquele cujo subsistema é especificado como "janelas".
Se um processo for iniciado na barra de tarefas ou na lista de saltos, o sistema definirá
Se o sinalizador STARTF_UNTRUSTEDSOURCE for especificado, o aplicativo deverá estar ciente de que a linha de comando não é confiável. Se esse sinalizador for definido, os aplicativos deverão desabilitar recursos potencialmente perigosos, como macros, conteúdo baixado e impressão automática. Esse sinalizador é opcional, mas os aplicativos que chamam CreateProcess são incentivados a definir esse sinalizador ao iniciar um programa com argumentos de linha de comando não confiáveis (como os fornecidos pelo conteúdo da Web) para que o processo recém-criado possa aplicar a política apropriada.
O sinalizador STARTF_UNTRUSTEDSOURCE tem suporte a partir do Windows Vista, mas não é definido nos arquivos de cabeçalho do SDK antes do SDK do Windows 10. Para usar o sinalizador em versões anteriores ao Windows 10, você pode defini-lo manualmente em seu programa.
Exemplos
O exemplo de código a seguir mostra o uso de 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 );
}
Para obter mais informações sobre este exemplo, consulte Criando processos.
Nota
O cabeçalho processthreadsapi.h define STARTUPINFO como um alias que seleciona automaticamente a versão ANSI ou Unicode dessa função com base na definição da constante do pré-processador UNICODE. A combinação do uso do alias neutro de codificação com código que não é neutro em codificação pode levar a incompatibilidades que resultam em erros de compilação ou de runtime. Para obter mais informações, consulte Conventions for Function Prototypes.
Requisitos
Requisito | Valor |
---|---|
de cliente com suporte mínimo | Windows XP [somente aplicativos da área de trabalho] |
servidor com suporte mínimo | Windows Server 2003 [somente aplicativos da área de trabalho] |
cabeçalho | processthreadsapi.h (inclua Windows.h no Windows Server 2003, Windows Vista, Windows 7, Windows Server 2008 Windows Server 2008 R2) |