Другие языки программирования и технологии

Один вопрос по Pascal (или Object Pascal, или Delphi) (не надо ничего решать, просто один вопрос)

Как в DOS приложение написанный на Pascal или Object Pascal (если в среде Delphi) скрыть черную коммандное окошко, а чтобы само приложение было запущено и продолжало работать. Ну вот например системные программые ctfmon.exe, winlogon.exe, svchost.exe и т.д. у них ведь нету никаких форм и черной окошки, они скрытно запускаются и работают. Как сделать такое в Pascal или в Object Pascal? Ведь такое возможно.
СА
С А Б И Т .
1 440
1. Вопрос никакого отношения к Паскалю не имеет.
2. Предыдущие отвечающие в принципе все сказали правильно, но, увы, не объяснили, в чем заключается твоя ошибка. А она - в путанице понятий.

Есть операционная система (ОС) DOS. Для нее существует специальный формат исполняемого файла. Эти файлы могут запускаться как в ОС DOS, так и в ОС Windows, причем последняя при запуске приложения создает для него консольное окно.

Есть ОС Windows, для нее существует другой формат исполняемого файла. Кроме того, приложения Windows принято делить на консольные и оконные.

И здесь ГЛАВНОЕ: приложение DOS и консольное приложение Windows - это совершенно различные форматы программ, хотя при запуске из Windows они могут выглядеть внешне совершенно одинаковыми.

Приложение DOS никак (!) не может влиять на то, как оно выглядит при запуске из Windows - это целиком определяет ОС. Кроме того, приложение DOS не может вызывать функции WinAPI. Но зато оно может перейти в графический режим (правда, как на попытку такого перехода отреагирует Windows - вопрос: мы ведь помним, что внешний вид приложения DOS определяется ОС) . Из консольного приложения Windows можно вызывать функции WinAPI, в частности, можно создавать дополнительные окна. Но само консольное окно ни при каких условиях нельзя сделать графическим либо скрыть с экрана.

Те, приложение, которые называются оконными на самом деле не создают окон по умолчанию. Все создаваемые в них окна создаются вручную программистом, поэтому такое приложение может работать вообще без окна либо со скрытым окном (чтобы получать оконные сообщения) .

Все сказанное относится исключительно к ОС, но никак не связано с языком программирования, будь то Паскаль, Си, Бейсик, Ассемблер либо Оберон.
Анатолий Пехтерев
Анатолий Пехтерев
11 765
Лучший ответ
Среда Delphi не предназначена для разработки ДОС-приложений.

> скрыть черную коммандное окошко

Убери из текста проекта строчку {$APPTYPE CONSOLE} и будет тебе счастье.

> Перечисленные тобой системные программы 100 пудово не консольные, они оконного типа

Не надо пороть чушь.
VG
V G
32 502
Черное окошко появляется у консольных программ. Они по другому скомпонованы (компоновщику дается указание консольное или оконное приложение сделать и в PE заголовке файла тип приложения прописан) . Когда загрузчик загружает консольное приложение, то автоматически создает для него черное окно и потокам ввода-вывода назначает нужные дескрипторы. Даже если в этом приложении создать свое окно, то черное так и будет висеть пока не закроется программа.
Перечисленные тобой системные программы 100 пудово не консольные, они оконного типа. Неверю, что программисты написавшие ОС (пусть и хреновую) не знают какой тип приложения компонавть для системных программ.
А вообще при запуске программы запускается процесс (его ты видишь в диспетчере задач) , а он уже может создавать окно.
найди, скачай и прочти книжку "Програмирование в Delphi глазами хакера" автора М. Фленова, там найдешь ответ на свой вопрос