Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / WinForms, .Net Framework Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
 Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4407
Пока программно тему не копал.
Есть идея утилитки.
Смысл, чтоб она могла запускаться и в режиме консоли, и в режиме "НЕ консоли", в зависимости от параметра командной строки.

Консоль нужна например если
1) делать туда вывод событий
2) если запуск в режиме bat-файла, то он будет ждать завершения и только потом переходить к след. команде

Консоль НЕ нужна например если
1) вывод в нее не нужен
2) черное ее окно на экран не нужно
и т.д.

О GUI типа формы на экран речь не идет, форму можно вызвать из main() и для консольного приложения, речь не об этом.

Грубо, хочу так (в свойствах проекта предположительно "Приложение Win Form + Sub Main")
Sub main()
   If InStr(Command, "/Console") Then
      'Поведение эквивалентное типу "Консольное приложение" в свойствах проекта
      'запускаем консоль, делаем действия выводим в консоль... (!!! bat-файл будет ждать завершения)
    Else
      'НЕ запускаем консоль, делаем действия (!!! bat-файл ждать НЕ будет)
    End If
End Sub


МОЖНО или НЕ МОЖНО?

2 проекта не хочу, там очень много всего а логика одинаковая (что с консолью, что без), сложно будет потом "параллельно поддерживать".
14 май 19, 23:43    [21884846]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
buser
Member

Откуда: Санкт-Петербург
Сообщений: 4451
Дмитрий77, Create page allocconsole (kernel32) ? может сработает
15 май 19, 00:33    [21884856]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Краткий ответ - нет (если не использовать нативный Win API, про который выше упоминали). А зачем это надо? Нельзя ли просто отделить функционал от UI и сделать к нему две разные морды - одну консольную, а другую GUI?
15 май 19, 05:03    [21884892]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
buser
Дмитрий77, Create page allocconsole (kernel32) ? может сработает
он же сказал что о ГУИ и формах речи не идет.
Я сам теряюсь что ему нужно)
15 май 19, 07:07    [21884907]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Дмитрий77
Консоль НЕ нужна например если
1) вывод в нее не нужен
2) черное ее окно на экран не нужно
и т.д.

Ты опиши что нужно мил человек.
А то выражение: "мне нужен НЕ ХЛЕБ" очень широко трактуется)
15 май 19, 07:09    [21884908]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Дмитрий77
2 проекта не хочу, там очень много всего а логика одинаковая (что с консолью, что без), сложно будет потом "параллельно поддерживать".
вот и не мудри.
Не может быть два проекта одинаковых чтобы их запускать по ключику консоль/не консоль.
Забудь. Тут даже постановка не катит.
15 май 19, 07:11    [21884910]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Дмитрий77
Member

Откуда:
Сообщений: 4407
fkthat
Краткий ответ - нет (если не использовать нативный Win API, про который выше упоминали).

м-м-м
счас глянул свои старые VB6 коды, именно так и было сделано одно из приложений
  str_Command = Command
  the_ConsoleMode = IIf(HasOptionFromStr(str_Command, "NoConsole"), False, True)
  If the_ConsoleMode Then
    'создаём консоль
    AllocConsole
    'получаем дескрипторы ввода и вывода
    hOutput = GetStdHandle(STD_OUTPUT_HANDLE)
    hInput = GetStdHandle(STD_INPUT_HANDLE)
  End If

А когда переписывал на .Net от API отказался в пользу "Консольное приложение".
И вилку эту убил.
Видимо придется реанимировать.
15 май 19, 07:13    [21884911]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Дмитрий77,
Именно бейсик и именно старые подходы. Денег за это счас не платят.
15 май 19, 07:17    [21884912]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
Дмитрий77,

Тут проблема в том, что у тебя, очень похоже, изначально через джоппу сделано. А именно логика перемешана с UI. Если бы это было разделено, хотя бы логически в пределах одного приложения, то логику легко было бы вынести в отдельную сборку и использовать в двух разных аппликухах с разными UI (GUI и CLI). Ты, вот, через неделю еще и веб-интерфейс захочешь - и что, еще и веб-сервер станешь встраивать в свое приложение вместе с GUI и консолью? Начни лучше с рефакторинга того, что есть.
15 май 19, 08:42    [21884939]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Изопропил
Member

Откуда:
Сообщений: 31192
Дмитрий77,

Не может. Флаг отвечающий за это находится в PE заголовке

AllocConsole применить можно, но могут быть проблемы с перенаправлением ввода-вывода

Чистый вариант - приложение делать консольным, если требуют флаги - создавать новый процесс и завершать текущий (естественно два exe потребуется, но это не страшно, основной код в dll должен располагаться
Второму exe можно изменить расширениие, .bin например.)

Недостатки - консольное окно на короткое время будет показываться и id процесса изменится

PS. бейсик и подходы ни причём
15 май 19, 08:52    [21884942]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
бейсик и подходы ни причём
да. Переборщил с целью, чтобы автор отказался от этой идеи. Она тут вроде уже второй раз за пару лет проскакивает.
15 май 19, 08:57    [21884948]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 677
fkthat
А именно логика перемешана с UI.

Пост автора не о этом...
А о том что он хочет возможность делать невидимую консоль

Автору: Есть немало советов и примеров на тему того, как скрыватть консольное окно через winApi
15 май 19, 09:04    [21884953]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
dvim
невидимую консоль
вот расскажи. Я правда не видел. Что то схожее с винсервисом?
15 май 19, 09:37    [21884982]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
dvim
Member

Откуда: Санкт Петербург
Сообщений: 677
Petro123,
Скорее он хочет, чтобы программа отрабатывала, ничего не показывая на экране.
Все таки винсервис - он не совсем для этого.


15 май 19, 09:59    [21885003]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
dvim,
Экран в консоли не программы а винды. Пусть не выводит туда ничего.
Что за блажь такая?
Некоторые ведь запрещают копировать текст мышкой в браузере.
Вы считаете это правильно?
15 май 19, 10:05    [21885006]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
fkthat
Member

Откуда:
Сообщений: 1164
dvim
А о том что он хочет возможность делать невидимую консоль


ОМГ. Зачем может быть нужна невидимая консоль??? Давайте тогда уж сразу сделаем невидимое приложение Если для логирования, то разумнее просто сделать логирование в файл или куда-нибудь еще.
15 май 19, 10:10    [21885010]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Изопропил
Member

Откуда:
Сообщений: 31192
Petro123
dvim
невидимую консоль
вот расскажи. Я правда не видел. Что то схожее с винсервисом?
не

Если консольное приложение создает окно,
окно консоли продолжает отображаться что не очень красиво,
Да и юзер может случайно завершить приложение закрыв консольное окно

PS
При сокрытии консольного окна нужно убедиться, что у него нет родителя
15 май 19, 10:26    [21885023]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
Если консольное приложение создает окно,
а зачем?
15 май 19, 10:28    [21885028]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил,
Я понимаю так, что консольное выводит в выходной поток.
15 май 19, 10:29    [21885031]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Изопропил
Member

Откуда:
Сообщений: 31192
fkthat
Зачем может быть нужна невидимая консоль???

Чтоб GUI рисовать отдельно
15 май 19, 10:30    [21885035]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
fkthat
Зачем может быть нужна невидимая консоль???

Чтоб GUI рисовать отдельно
пример то есть из гугла? Дайте.
15 май 19, 10:31    [21885037]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Изопропил
Member

Откуда:
Сообщений: 31192
Petro123
Изопропил
Если консольное приложение создает окно,
а зачем?
топикстартер хочет написать универсальное приложение консоль/GUI
15 май 19, 10:33    [21885040]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Изопропил
топикстартер хочет написать универсальное приложение консоль/GUI
пример которого отсутствует в гугл картинки.
Поздравляю.
Он запретил мышкой копировать текст на своем сайте.
Удачи ему.
15 май 19, 10:35    [21885041]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Roman Mejtes
Member

Откуда: г. Пермь
Сообщений: 3445
уже обсуждали эту тему и не 1 раз в этом разделе
https://www.sql.ru/forum/1305732/konsolnoe-prilozhenie-nuzhen-sovet?hl=console winforms
15 май 19, 10:37    [21885044]     Ответить | Цитировать Сообщить модератору
 Re: Может ли быть Консольным или WinForm в зависимости от параметра?  [new]
Petro123
Member

Откуда: Загрузочный сектор Москвы (AutoPOI.ru)
Сообщений: 38643
Roman Mejtes,
Да. Точно. Было)
Раз в год.
Я кстати из винФормс подавляю окно консоли runSql.exe.
Но это совсем другое дело.
15 май 19, 10:40    [21885047]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2 3   вперед  Ctrl      все
Все форумы / WinForms, .Net Framework Ответить