Mikle писал(а):Не понятно, как получить "stdin, stdout, stderr", что это за величины?
Хендлы. Причём коммуникационные хендлы. То есть существует семейство хендлов, отождествляющие объекты, в которые можно
читать и писать. То есть файлы, пайпы, сокеты, порты, диски, ленточные стримеры и т.п.
Mikle писал(а):Может есть какие-то коды возврата, как есть Command$ для доступа к входящим параметрам?
Нет. Код возврата есть, но это числовой код, который возвращает WinMain. Нет ничего подобного в системе как возврат текстовый сообщений. Есть просто чтение/запись в объект, поддерживающий IO-операции.
GetStdHandle возвращает хендлы чего-то, во что можно писать и откуда можно писать. Ты даже не знаешь что это. Это будет консоль, если твою программу запустили просто так.
Это будет хендл файла, если твою программу запустили так:
your_program.exe > output.txtЭто бужет хендл пайпа, если твою программу запустили из командной строки так:
some_program.exe | your_program.exe | third_program.exeMikle писал(а):Хотя, подозреваю, что Win32 программы, в отличие от DOS-программ, после запуска получают отдельный поток и теряют связь с консолью.
Сравнение с досом совершенно неадекватное. Ужасно, что все сравнивают консольные Windows-приложения с DOS-программами на том основании, что DOS-программы получают при запуске такой же окно, как и консольные Windows-приложения.
Конечно каждый процесс (не важно, консольный он, или это Half-Life) имеет свой новый поток. И все консольные приложения, порождённые друг-от-друга без особых мер, имеют равный доступ консоли. Так что могут, например, одновременно работая, выводить в консоль
кашу-малашу.