/ SUBSYSTEM:Windows程序不会写入命令行

时间:2010-04-01 15:10:52

标签: command-line visual-studio-2005 console subsystem

我在Visual Studio 2005中有一个混合模式C ++ - CLI程序,设置为使用/ SUBSYSTEM:Windows。一般来说,它是从其快捷方式或通过注册到它的文件类型启动的图形应用程序。

但是,很少有用户希望从命令行使用参数运行它。我可以很好地访问参数,它在写入控制台时,响应从命令行使用参数启动的程序,我看不到Console::WriteLine有任何影响。

我做错了什么?

2 个答案:

答案 0 :(得分:3)

这个很烦人,我同意。你没有做错任何事,这是Windows设置方式的一个怪癖。

至少在某些情况下,可以解决此问题,请参阅http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx。我没有遇到任何其他实际使用这些方法的人。

大多数人IME只是创建两个不同名称的可执行文件版本,一个用于批处理用户(“myapp.exe”),另一个用于从开始菜单运行(“myappw.exe”)。

有关详情,How to output to the console in C++/Windows的部分建议可能会有用。

答案 1 :(得分:1)

这是一个老问题 - 请参阅http://www.codeproject.com/KB/cpp/EditBin.aspx了解解决方案

您还可以将流重新打开到控制台

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;
}

编辑:抱歉这是纯C ++,不了解C ++ / cli