/ SUBSYSTEM: программа Windows не будет записывать в командную строку - PullRequest
3 голосов
/ 01 апреля 2010

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

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

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

Ответы [ 2 ]

3 голосов
/ 01 апреля 2010

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

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

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

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

1 голос
/ 01 апреля 2010

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

edit: извините, это чистый C ++, не знаю о C ++ / cli

...