/Subsistema: o programa Windows não será gravado na linha de comando
-
23-09-2019 - |
Pergunta
Eu tenho um programa CLI MODE C ++-CLI no Visual Studio 2005, que deve usar o /Subsistema: Windows. De um modo geral, é um aplicativo gráfico lançado a partir de seu atalho ou através do FileType registrado.
No entanto, há uma ocasião rara em que um usuário desejará executá -lo na linha de comando com argumentos. Eu posso acessar os argumentos muito bem, é quando se trata de escrever no console, em resposta ao programa lançado da linha de comando com argumentos, onde não vejo Console::WriteLine
tendo algum efeito.
O que estou fazendo errado?
Solução
Este é irritante, eu concordo. Você não está fazendo nada de errado, é uma peculiaridade da maneira como o Windows é configurado.
É possível resolver isso, pelo menos em alguns casos, veja http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx . Eu não encontrei mais ninguém que realmente usou esses métodos.
A maioria das pessoas ime apenas cria duas versões do executável com nomes diferentes, um para usuários de lote ("myapp.exe") e outro para quando for executado no menu Iniciar ("myappw.exe").
Para mais informações, algumas das sugestões em Como produzir para o console em C ++/Windows pode ser útil.
Outras dicas
É um problema antigo - veja http://www.codeproject.com/kb/cpp/editbin.aspx para soluções
Você também pode reabrir os fluxos para um console
int WINAPI WinMain(HINSTANCE hInst, HINSTANCE /*hPrevInst*/, LPSTR cmd_line, int showmode)
{
AllocConsole(); //create a console
ifstream conin("con"); // not sure if this should be "con:" ?
ofstream conout("con");
cout.rdbuf(conout.rdbuf());
cerr.rdbuf(conout.rdbuf());
cin.rdbuf(conin.rdbuf());
FreeConsole();
return 0;
}
EDIT: Desculpe, isso é puro C ++, não sei sobre C ++/CLI