Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

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

 
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 вся ветка

Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.046 c
3-1108648358
Pluto
2005-02-17 16:52
2005.03.20
Размер базы данных


1-1110362767
rolex
2005-03-09 13:06
2005.03.20
Зачем нужны DLL???


4-1107279373
Vad_K
2005-02-01 20:36
2005.03.20
Чтение и запись портов ввода-вывода под WinNT


4-1107798622
Putnik
2005-02-07 20:50
2005.03.20
EnumCalendarInfo


1-1109937507
DimonNew
2005-03-04 14:58
2005.03.20
TList и new и dispose и ограничение по расмеру





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский