|
|
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Всем добрый день Делаю приложение, которое может работать в гибридном режиме: из командной строки или из GUI Привязывание к дочерней консоли делаю так: Код: pascal 1. 2. 3. 4. И консоль привязывается. Но возникают сложности 1. Не работают Write/Writeln, хотя GetStdHandle(STD_OUTPUT_HANDLE) возвращает валидное значение. Решаю самостоятельным выводом в консоль через WriteFile(GetStdHandle(STD_OUTPUT_HANDLE), ...) 2. При запуске из cmd приложение выводит текст, но не завершается, пока я не нажму Enter, хотя Readln нигде не ставил. 3. Конструкция "приложение > текстовый файл" не работает, файл создаётся, но не заполняется Как правильно работать с AttachConsole и выводом? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 00:59 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
OleAutomatorДелаю приложение, которое может работать в гибридном режиме: из командной строки или из GUI Обломись, ничего хорошего из этого не выйдет. Даже после преодоления всех трудностей, текст, выводимый тобой на консоль будет путаться с выводом остальных программ (включая cmd). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 02:02 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Почему оно должно путаться? Утилиту вызывают из cmd, она выполняет свою работу - управление возвращается пользователю cmd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 03:04 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
OleAutomatorУтилиту вызывают из cmd, она выполняет свою работу - управление возвращается пользователю cmd Вот тут ты сильно заблуждаешься: управление возвращается ещё до того, как утилита начинает выполнять свою работу. За исключением вызова через "start /w". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 12:36 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Что Вы имеете ввиду? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 13:22 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
OleAutomatorDimitry Sibiryakov, Что Вы имеете ввиду? При вызове GUI-приложения из консоли - возврат к cmd происходит сразу после запуска приложения, а не после выхода из него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 15:32 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
alekcvp, А как консоль определяет: приложение консольное или GUI? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 16:07 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
ГолландецА как консоль определяет: приложение консольное или GUI? IMAGE_SUBSYSTEM_WINDOWS_CUI ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 16:33 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyIMAGE_SUBSYSTEM_WINDOWS_CUI И именно из-за этого битика в заголовке экзешника и проистекает уныние при попытке сделать универсальное приложение. Если он установлен - проблемы с одним режимом. Установлен - с другим. И работа с этим битом осуществляется системой ещё до запуска приложения, так что повлиять на это поведение "изнутри" невозможно. Отсюда в первом посте "обломись". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 17:34 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Большое спасибо Вообще нам нужно не GUI + Console, а Service + Standalone Console. Кто-нибудь знает, какие приятные и неприятные сюрпризы ожидают, если {$APPTYPE CONSOLE} запускать как сервис? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 18:27 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
OleAutomatorкакие приятные и неприятные сюрпризы ожидают, если {$APPTYPE CONSOLE} запускать как сервис? Недоступность Input/Output и всё. Большинство сервисов в Windows собрано как раз как консольные приложения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 18:36 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Большое спасибо Может ещё скажите, можно ли определить... консольное приложение запускается самостоятельно или из родительской консоли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 18:51 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
OleAutomatorможно ли определить... консольное приложение запускается самостоятельно или из родительской консоли? Прямо сходу я такого способа не помню. А какой в этом смысл? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2019, 20:13 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Например, изменить заголовок и размеры в случае самостоятельного запуска ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 01:14 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Я делал GUI приложение, которое может запускаться как windows сервис. Примерно так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. А вот делать консоль + GUI, я думаю что если и получится, то оно может работать по разному в Win7, Win10, Win Server и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 07:18 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
OleAutomatorНапример, изменить заголовок и размеры в случае самостоятельного запуска Менять заголовок на время работы будет правильным в любом случае. Это приятно когда на таскбаре отображается информация от текущего процесса. Смотрю вот MSDN и думаю, что лично я бы попробовал задействовать GetConsoleProcessList() если не будет лучшей идеи. black-manateeПримерно так Ужоснах. Гораздо проще будет не использовать VCL-ную обвязку для сервиса, тогда этот говнокод сводится к вызову одной функции. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 12:46 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovOleAutomatorНапример, изменить заголовок и размеры в случае самостоятельного запуска Менять заголовок на время работы будет правильным в любом случае. Это приятно когда на таскбаре отображается информация от текущего процесса. Смотрю вот MSDN и думаю, что лично я бы попробовал задействовать GetConsoleProcessList() если не будет лучшей идеи. black-manateeПримерно так Ужоснах. Гораздо проще будет не использовать VCL-ную обвязку для сервиса, тогда этот говнокод сводится к вызову одной функции. Можно привести примерчик ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 12:54 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
black-manateeМожно привести примерчик ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 13:00 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovblack-manateeМожно привести примерчик ? Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Ну и... Чем Ваш говнокод отличается от моего. Разница лишь в том, что я конкретно запускаю либо как сервис, либо как ГУИ, а Вы пытаетесь сперва запустить как сервис, а уже потом, при ошибке запускать как ГУИ. Ну так я так и хотел сделать по ряду причин. В остальном, мой говнокод менее говнокодистый чем Ваш. Ну вот не сторонник я таких конструкций типа: if(+-~!*&++a)... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 13:45 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
После вызова StartServiceCtrlDispatcher не работают ShowMessage и т.п. Поэтому, важно определить до ее вызова, будет ли сервис или GUI. Удобно такое делать исключительно для отладки.. Когда не надо запускать как сервис и аттачится, а просто запустил... Подробнее здесь: 21315011 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 14:02 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
X-CiteПосле вызова StartServiceCtrlDispatcher не работают ShowMessage и т.п. После успешного - да. Ибо какой ещё ShowMessage из сервиса?.. X-Citeважно определить до ее вызова, будет ли сервис или GUI. Как? Телепатия? Сервис использует ту же самую точку входа, что и обычное приложение. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 14:37 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovX-CiteПосле вызова StartServiceCtrlDispatcher не работают ShowMessage и т.п. После успешного - да. Ибо какой ещё ShowMessage из сервиса?.. X-Citeважно определить до ее вызова, будет ли сервис или GUI. Как? Телепатия? Сервис использует ту же самую точку входа, что и обычное приложение. Мировая инженерная мысль уже придумала настройки, реестр, конфигурационные файлы, параметры командной строки и прочие прикольные штуки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 14:44 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovX-CiteПосле вызова StartServiceCtrlDispatcher не работают ShowMessage и т.п. После успешного - да. Ибо какой ещё ShowMessage из сервиса?.. X-Citeважно определить до ее вызова, будет ли сервис или GUI. Как? Телепатия? Сервис использует ту же самую точку входа, что и обычное приложение. Рабочая станция разная у сервиса и у GUI, по ней можно определить как запускается приложение имея одну точку входа. Пример выше.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 15:04 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
black-manateeМировая инженерная мысль уже придумала настройки, реестр, конфигурационные файлы, параметры командной строки и прочие прикольные штуки. А мировая мысль работников саппорта уже прокляла этих инженеров, поскольку засыпана запросами от пользователей, которые, наплевав на документацию, установили и настроили не так в результате чего у них "ничего не работает". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.05.2019, 16:23 |
|
||
|
Как правильно вызывать AttachConsole?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Менять заголовок если приложение имеет режим утилиты, которая отработала что-то и вернула результат, как мне кажется - не самая лучшая идея. Сейчас столкнулись вот с чем. Как раз есть несколько утилитарных приложений, которые выполняют что-то и пишут результат в консоль. Но если приложение запускается самостоятельно, а нужно это часто, перед завершением нужно делать Readln. Ещё кейс. В режиме отладки мы выставляем ReportMemoryLeaksOnShutdown в True. И когда приложение кем-то запускается - нет проблем, информация пишется в консоль. Но в standalone нам нужно в finalization выставлять IsConsole в False - чтобы разработчик был информирован об утечке в отдельном окне. Хотелось бы сделать это красиво. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2019, 18:43 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39818409&tid=2039380]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
162ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 207ms |
| total: | 462ms |

| 0 / 0 |
