/ПОДСИСТЕМА: программа Windows не будет выполнять запись в командную строку
-
23-09-2019 - |
Вопрос
У меня есть программа смешанного режима 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