Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Консольное приложение   Найти похожие ветки 

 
wal ©   (2005-02-04 10:21) [0]

Господа, подскажите пожалуйста, как написать консольное приложение, напрмер тот же "Hello World!" не используя директиву {$APPTYPE CONSOLE}?
Это, так сказать, частный вопрос. А в общем, необходимо сделать программу, причем на этапе компиляции не известно, в консольном режиме она будет работать, или в GUI, это должно определяться параметрами командной строки во время запуска.

С уважением.


 
Чапаев ©   (2005-02-04 10:22) [1]

Вызывай AllocConsole() & FreeConsole() по мере необходимости.


 
wal ©   (2005-02-04 12:52) [2]

AllocConsole() мне новую консоль открывает, даже если я запустил из командной строки. Такое поведение меня не устраивает, если запустился из командной строки, то в ту консоль и писать надо. Так же, естественно, не работает перенаправление вывода project.exe>1.txt

С уважением.


 
VMcL ©   (2005-02-04 13:11) [3]

>>wal ©  (04.02.05 10:21)

>необходимо сделать программу, причем на этапе компиляции не известно, в консольном режиме она будет работать, или в GUI, это должно определяться параметрами командной строки во время запуска.

Консольному приложению не возбраняется создавать GUI окна.


 
Jay1982 ©   (2005-02-04 13:12) [4]

Передай в параметрах запуска тип приложения, а потом в зависимости от типа выполняй определённые действия


 
BiN ©   (2005-02-04 13:19) [5]

wal ©   (04.02.05 12:52) [2]

AllocConsole() мне новую консоль открывает, даже если я запустил из командной строки.


В XP и далее можно исп-ть AttachConsole
С уважением


 
wal ©   (2005-02-04 13:22) [6]

>VMcL ©   (04.02.05 13:11) [3]
>Консольному приложению не возбраняется создавать GUI окна.
Это я тоже в курсе, но
1. при выполнении такого приложения в GUI-режиме из командной строки, консоль командной строки останется "заблокированной", пока я программу не закрою (этого не происходит при запуске приложения без {$APPTYPE CONSOLE}).
2. при запуске из проводника в GUI-режиме будет создана консоль, которая мне совершенно ни к чему.

>Jay1982 ©   (04.02.05 13:12) [4]
>...выполняй определённые действия.
Какие?

С уважением.


 
wal ©   (2005-02-04 13:24) [7]

>BiN ©   (04.02.05 13:19) [5]
>В XP и далее можно исп-ть AttachConsole
А до ХР?


 
wal ©   (2005-02-04 13:26) [8]

Переформулирую вопрос.
Какие действия происходят в приложении, откомпилированном с директивой {$APPTYPE CONSOLE} до перехода на begin?

С уважением.


 
BiN ©   (2005-02-04 13:33) [9]

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


 
MBo ©   (2005-02-04 13:41) [10]

>написать консольное приложение, не используя директиву {$APPTYPE CONSOLE}?
dcc32 -cc projectname.dpr


 
Игорь Шевченко ©   (2005-02-04 13:48) [11]


> Какие действия происходят в приложении, откомпилированном
> с директивой {$APPTYPE CONSOLE} до перехода на begin?


При создании процесса подсистеме Win32 передается указание связать новый процесс с консольным сервером или не связывать. Если связывать, то окнами процесса (не создаными явно) начинает заведовать консольный сервер.

С уважением,


 
wal ©   (2005-02-04 14:51) [12]

Вобщем никак. Жаль.
Еще один интересный момент заметил в ходе экспериментов.
GetStdHandle для GUI-приложения возвращает ноль а не INVALID_HANDLE_VALUE. Кто-нибудь может прокомментировать  подобное поведение?

С уважением.


 
Игорь Шевченко ©   (2005-02-04 15:05) [13]

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."

С уважением,


 
Jay1982 ©   (2005-02-04 15:20) [14]

RTFM


 
DVM ©   (2005-02-04 16:19) [15]

кстати на некоторых компьютерах все работает и без {$APPTYPE CONSOLE}, а на некоторых только с ней. И там и там XP.



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.057 c
1-1110295911
xmrz
2005-03-08 18:31
2005.03.20
Delphi 2005 & ASP .NET


3-1108539446
mefodiy
2005-02-16 10:37
2005.03.20
Проблемы со шрифтами при распаковке *.DB файла WinZip-ом


1-1109420614
Глеб
2005-02-26 15:23
2005.03.20
Использование тем Windows XP


14-1109342839
Rouse_
2005-02-25 17:47
2005.03.20
Маленькое ММР


1-1109945501
andrey__
2005-03-04 17:11
2005.03.20
TDBGrid - свойство FixedCols