Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O sistema cria um novo console quando inicia um processo de console, um processo de modo de caractere cujo ponto de entrada é a função principal . Por exemplo, o sistema cria um novo console quando inicia o processador cmd.exede comandos. Quando o processador de comandos inicia um novo processo de console, o usuário pode especificar se o sistema cria um novo console para o novo processo ou se herda o console do processador de comandos.
Um processo pode criar um console usando um dos seguintes métodos:
- Uma GUI (interface gráfica do usuário) ou um processo de console pode usar a função CreateProcess com CREATE_NEW_CONSOLE para criar um processo de console com um novo console. (Por padrão, um processo de console herda o console pai e não há nenhuma garantia de que a entrada seja recebida pelo processo para o qual foi pretendida.)
- Um processo de GUI ou console que não está atualmente anexado a um console pode usar a função AllocConsole para criar um novo console. (Os processos de GUI não são anexados a um console quando são criados. Os processos de console não serão anexados a um console se forem criados usando CreateProcess com DETACHED_PROCESS.)
Normalmente, um processo usa AllocConsole para criar um console quando ocorre um erro que exige interação com o usuário. Por exemplo, um processo de GUI pode criar um console quando ocorre um erro que o impede de usar sua interface gráfica normal ou um processo de console que normalmente não interage com o usuário pode criar um console para exibir um erro.
Um processo também pode criar um console especificando o sinalizador CREATE_NEW_CONSOLE em uma chamada para CreateProcess. Esse método cria um novo console acessível ao processo filho, mas não ao processo pai. Consoles separados permitem que os processos pai e filho interajam com o usuário sem conflitos. Se esse sinalizador não for especificado quando um processo de console for criado, ambos os processos serão anexados ao mesmo console e não haverá nenhuma garantia de que o processo correto receberá a entrada pretendida para ele. Os aplicativos podem evitar confusão criando processos filho que não herdam identificadores do buffer de entrada ou habilitando apenas um processo filho por vez para herdar um identificador de buffer de entrada, impedindo que o processo pai leia a entrada do console até que o filho tenha terminado.
A criação de um novo console resulta em uma nova janela de console, bem como buffers de E/S separados para saída para a tela e entrada do usuário. O processo associado ao novo console usa a função GetStdHandle para obter as alças dos buffers de entrada e tela do novo console. Esses identificadores permitem que o processo acesse o console.
Quando um processo usa CreateProcess, ele pode especificar uma estrutura STARTUPINFO , cujos membros controlam as características do primeiro console novo (se houver) criado para o processo filho. A estrutura STARTUPINFO especificada na chamada para CreateProcess afeta um console criado se o sinalizador CREATE_NEW_CONSOLE for especificado. Ele também afetará um console criado se o processo filho usar o AllocConsole posteriormente. As seguintes características do console podem ser especificadas:
- Tamanho da nova janela do console, em células de caracteres
- Local da nova janela do console, em coordenadas de pixel de tela
- Tamanho do buffer de tela do novo console, em células de caracteres
- Atributos de cor de plano de fundo e texto do buffer de tela do novo console
- Nome de exibição da barra de título da janela do novo console
O sistema usará valores padrão se os valores STARTUPINFO não forem especificados. Um processo filho pode usar a função GetStartupInfo para determinar os valores em sua estrutura STARTUPINFO .
Um processo não pode alterar o local da janela do console na tela, mas as funções de console a seguir estão disponíveis para definir ou recuperar as outras propriedades especificadas na estrutura STARTUPINFO .
| Função | Descrição |
|---|---|
| GetConsoleScreenBufferInfo | Recupera o tamanho da janela, o tamanho do buffer de tela e os atributos de cor. |
| SetConsoleWindowInfo | Altera o tamanho da janela do console. |
| SetConsoleScreenBufferSize | Altera o tamanho do buffer de tela do console. |
| SetConsoleTextAttribute | Define os atributos de cor. |
| SetConsoleTitle | Define o título da janela do console. |
| GetConsoleTitle | Recupera o título da janela do console. |
Um processo pode usar a função FreeConsole para se desanexar de um console herdado ou de um console criado pela AllocConsole.
Um processo pode usar a função AttachConsole para se anexar a outra sessão de console existente depois de usar FreeConsole para desanexar de sua própria sessão (ou se não houver nenhuma sessão anexada).