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?

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top