/ПОДСИСТЕМА: программа Windows не будет выполнять запись в командную строку

StackOverflow https://stackoverflow.com/questions/2561399

Вопрос

У меня есть программа смешанного режима C ++-CLI в Visual Studio 2005, которая настроена на использование /SUBSYSTEM: Windows.Вообще говоря, это графическое приложение, которое запускается из его ярлыка или через зарегистрированный в нем тип файла.

Однако бывает редкий случай, когда пользователь захочет запустить его из командной строки с аргументами.Я могу получить доступ к аргументам просто отлично, когда дело доходит до записи в консоль, в ответ на запуск программы из командной строки с аргументами, которых я не вижу Console::WriteLine имеющий какой-либо эффект.

Что я делаю не так?

Это было полезно?

Решение

Это раздражает, я согласен.Вы не делаете ничего плохого, это особенность настройки Windows.

Это возможно решить, по крайней мере, в некоторых случаях, см. http://blogs.msdn.com/junfeng/archive/2004/02/06/68531.aspx .Однако я не встречал никого другого, кто действительно использовал бы эти методы.

Большинство людей IME просто создают две версии исполняемого файла с разными именами, одну для пакетных пользователей ("myapp.exe") и одну для запуска из меню "Пуск" ("myappw.exe").

Для получения дополнительной информации, некоторые предложения по адресу Как вывести на консоль на C ++/Windows может быть полезно.

Другие советы

Это старая проблема - понимаете 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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top