![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Консольное приложение
wal © (2005-02-04 10:21:00)Господа, подскажите пожалуйста, как написать консольное приложение, напрмер тот же "Hello World!" не используя директиву {$APPTYPE CONSOLE}?
Это, так сказать, частный вопрос. А в общем, необходимо сделать программу, причем на этапе компиляции не известно, в консольном режиме она будет работать, или в GUI, это должно определяться параметрами командной строки во время запуска.
С уважением.
DVM (2005-02-04 16:19:00) [1]кстати на некоторых компьютерах все работает и без {$APPTYPE CONSOLE}, а на некоторых только с ней. И там и там XP.
Jay1982 (2005-02-04 15:20:00) [2]RTFM
Игорь Шевченко (2005-02-04 15:05:00) [3]MSDN может прокомментировать:
"If an application does not have associated standard handles, such as a service running on an interactive desktop, and has not redirected them, the return value is NULL."
С уважением,
wal (2005-02-04 14:51:00) [4]Вобщем никак. Жаль.
Еще один интересный момент заметил в ходе экспериментов.
GetStdHandle для GUI-приложения возвращает ноль а не INVALID_HANDLE_VALUE. Кто-нибудь может прокомментировать подобное поведение?
С уважением.
Игорь Шевченко (2005-02-04 13:48:00) [5]
> Какие действия происходят в приложении, откомпилированном
> с директивой {$APPTYPE CONSOLE} до перехода на begin?
При создании процесса подсистеме Win32 передается указание связать новый процесс с консольным сервером или не связывать. Если связывать, то окнами процесса (не создаными явно) начинает заведовать консольный сервер.
С уважением,
MBo (2005-02-04 13:41:00) [6]>написать консольное приложение, не используя директиву {$APPTYPE CONSOLE}?
dcc32 -cc projectname.dpr
BiN (2005-02-04 13:33:00) [7]wal © (04.02.05 13:22) [6]
1. при выполнении такого приложения в GUI-режиме из командной строки, консоль командной строки останется "заблокированной", пока я программу не закрою (этого не происходит при запуске приложения без {$APPTYPE CONSOLE}).
2. при запуске из проводника в GUI-режиме будет создана консоль, которая мне совершенно ни к чему.
Думаю, нужно делать 2 отдельных процесса. MS таким образом реализует WScript.exe и CScript.exe
wal © (04.02.05 13:26) [8]
Какие действия происходят в приложении, откомпилированном с директивой {$APPTYPE CONSOLE} до перехода на begin?
Ctrl+Alt+C
wal (2005-02-04 13:26:00) [8]Переформулирую вопрос.
Какие действия происходят в приложении, откомпилированном с директивой {$APPTYPE CONSOLE} до перехода на begin?
С уважением.
wal (2005-02-04 13:24:00) [9]>BiN © (04.02.05 13:19) [5]
>В XP и далее можно исп-ть AttachConsole
А до ХР?
wal (2005-02-04 13:22:00) [10]>VMcL © (04.02.05 13:11) [3]
>Консольному приложению не возбраняется создавать GUI окна.
Это я тоже в курсе, но
1. при выполнении такого приложения в GUI-режиме из командной строки, консоль командной строки останется "заблокированной", пока я программу не закрою (этого не происходит при запуске приложения без {$APPTYPE CONSOLE}).
2. при запуске из проводника в GUI-режиме будет создана консоль, которая мне совершенно ни к чему.
>Jay1982 © (04.02.05 13:12) [4]
>...выполняй определённые действия.
Какие?
С уважением.
BiN (2005-02-04 13:19:00) [11]wal © (04.02.05 12:52) [2]
AllocConsole() мне новую консоль открывает, даже если я запустил из командной строки.
В XP и далее можно исп-ть AttachConsole
С уважением
Jay1982 (2005-02-04 13:12:00) [12]Передай в параметрах запуска тип приложения, а потом в зависимости от типа выполняй определённые действия
VMcL (2005-02-04 13:11:00) [13]>> wal © (04.02.05 10:21)
> необходимо сделать программу, причем на этапе компиляции не известно, в консольном режиме она будет работать, или в GUI, это должно определяться параметрами командной строки во время запуска.
Консольному приложению не возбраняется создавать GUI окна.
wal (2005-02-04 12:52:00) [14]AllocConsole() мне новую консоль открывает, даже если я запустил из командной строки. Такое поведение меня не устраивает, если запустился из командной строки, то в ту консоль и писать надо. Так же, естественно, не работает перенаправление вывода project.exe>1.txt
С уважением.
Чапаев (2005-02-04 10:22:00) [15]Вызывай AllocConsole() & FreeConsole() по мере необходимости.