|
WinForms и Console
|
|||
---|---|---|---|
#18+
Есть WinForms приложение, там такой кусок кода Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9.
При запуске в студии - создается Винформ окно и рядом консольное, но "Hello World" выводится не в консоль, а в Output панель студии. И на чтении ReadKey обламывается ex = {"Cannot read keys when either application does not have a console or when console input has been redirected from a file. Try Console.Read."} Как из-под студии заставить писать и читать из консольного окна? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 14:54 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
конфигурация проекта какая? (x86/x64/AnyCPU ?) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 15:28 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
самый рабочий вариант, это собирать консольное приложение, а не оконное, а в нем запускать WinForms окно или Application; Суть в том, что в результирующем EXE файле, в его заголовке есть соответствующий атрибут, который определяет, что это именно консольное, а не GDI, или какое то еще приложение. По этому, чтоб можно было взаимодействовать с консолью, работали перенаправления и прочая мура без танцев с бубном, нужно его выставлять. Он и выставляется, когда собираешь проект, как консольное приложение. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 15:59 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
Сон Веры Павловны конфигурация проекта какая? (x86/x64/AnyCPU ?) AnyCPU Но, собственно, можно выбрать другую ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 16:27 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
В свойствах прожекта поменял ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 16:50 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
А вот как бы такое сделать: в вызываемом коде много Console.WriteLine("арарарара"); Как сделать новую форму и туда перенаправить весь вывод Console? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 17:27 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
Ролг Хупин А вот как бы такое сделать: в вызываемом коде много Console.WriteLine("арарарара"); Как сделать новую форму и туда перенаправить весь вывод Console? https://www.google.com/search?q=c# redirect console output Roman Mejtes По этому, чтоб можно было взаимодействовать с консолью, работали перенаправления и прочая мура без танцев с бубном, нужно его выставлять. Он и выставляется, когда собираешь проект, как консольное приложение. Да вот ничего подобного. Сто раз вышеописанное делал, всё прекрасно работает, достаточно просто сделать AllocConsole. Причем проблема у ТС возникает только при запуске проекта из студии - собственно, она у всех, у кого возникает, возникает именно в случае запуска из студии, в отдельном самостоятельном exe в консоль всё прекрасно выводится. У меня было подобная проблема, всегда спасало использование NLog c console-таргетом (соответственно, вместо Console.WriteLine - log.Debug), и перевод приложения с x86 на AnyCPU/х64 - при запуске из студии в консоль начинало выводиться норально. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 18:32 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
Сон Веры Павловны, Если из GDI приложения вызвать AllocConsole, сама консоль будет создана и можно будет в нее выводить и прочее, но вот перенаправление потоков системное работать не будет, инфа 100% и это будет отдельное окно консоли, а не то, из которого эта программа была запущена. то есть если я запущу такую программу, вывод будет не в текущую консоль, а в другую. как по мне, это вообще не торт, работать с такой консолью будет тот еще геморой, который не стоит свеч. Если я не прав, хотелось бы глянуть на пример, где это сделано. самый топовый вариант, который у меня получался, это именно сделать WinForm приложение и в конце компиляции менять в хеадере EXE файла этот флаг. но такой вариант я советовать не буду, так как это уже по сути хак, а не решение, костыль ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 00:01 |
|
WinForms и Console
|
|||
---|---|---|---|
#18+
Roman Mejtes самый топовый вариант, который у меня получался, это именно сделать WinForm приложение и в конце компиляции менять в хеадере EXE файла этот флаг Зачем такие извраты? Я просто в csproj обычно прописываю Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Roman Mejtes Если из GDI приложения вызвать AllocConsole, сама консоль будет создана и можно будет в нее выводить и прочее, но вот перенаправление потоков системное работать не будет, инфа 100% и это будет отдельное окно консоли Ну потому что приложение с UI subsystem при запуске не наследует консоль, из которого было запущено, потому что оно UI, и AllocConsole создает новую консоль. Для использования консоли, из которой был сделан запуск, надо вызывать AttachConsole. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2020, 08:13 |
|
|
start [/forum/topic.php?fid=20&msg=40029112&tid=1398398]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 164ms |
0 / 0 |