Используя Windows API, мы можем запустить новый процесс, консольное приложение, и скрыть его «черное» окно. Это можно сделать при создании процесса и вообще не показывать «черное» окно.
В функции CreateProcess параметр dwCreationFlags
может иметь CREATE_NO_WINDOW флаг:
The process is a console application that is being run
without a console window. Therefore, the console handle
for the application is not set. This flag is ignored if
the application is not a console application
Вот ссылка на hide-win32-console-window исполняемый файл с использованием этого метода и исходный код .
hide-win32-console-window
аналогичен программе без вывода сообщений Джеймдлина .
Возникает открытый вопрос: что делать с выводом программы, когда ее окно не существует? Что делать, если происходят исключения? Не очень хорошее решение, чтобы выбросить результаты. hide-win32-console-window
использует анонимные каналы для перенаправления вывода программы в файл, созданный в текущем каталоге.
Использование
batchscript_starter.exe full / path / to / application [ аргументы для передачи ]
Пример запуска скрипта Python
batchscript_starter.exe c:\Python27\python.exe -c "import time; print('prog start'); time.sleep(3.0); print('prog end');"
Выходной файл создается в рабочем каталоге с именем python.2019-05-13-13-32-39.log
с выводом из команды python:
prog start
prog end
Пример рабочей команды
batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C dir .
Выходной файл создается в рабочем каталоге с именем cmd.2019-05-13-13-37-28.log
с выводом из CMD:
Volume in drive Z is Storage
Volume Serial Number is XXXX-YYYY
Directory of hide_console_project\hide-win32-console-window
2019-05-13 13:37 <DIR> .
2019-05-13 13:37 <DIR> ..
2019-05-13 04:41 17,274 batchscript_starter.cpp
2018-04-10 01:08 46,227 batchscript_starter.ico
2019-05-12 11:27 7,042 batchscript_starter.rc
2019-05-12 11:27 1,451 batchscript_starter.sln
2019-05-12 21:51 8,943 batchscript_starter.vcxproj
2019-05-12 21:51 1,664 batchscript_starter.vcxproj.filters
2019-05-13 03:38 1,736 batchscript_starter.vcxproj.user
2019-05-13 13:37 0 cmd.2019-05-13-13-37-28.log
2019-05-13 04:34 1,518 LICENSE
2019-05-13 13:32 22 python.2019-05-13-13-32-39.log
2019-05-13 04:55 82 README.md
2019-05-13 04:44 1,562 Resource.h
2018-04-10 01:08 46,227 small.ico
2019-05-13 04:44 630 targetver.h
2019-05-13 04:57 <DIR> x64
14 File(s) 134,378 bytes
3 Dir(s) ???,???,692,992 bytes free
Пример ярлыка для запуска скрипта .bat
Target
поле:
C:\batchscript_starter.exe C:\WINDOWS\system32\cmd.exe /C C:\start_wiki.bat
Каталог, указанный в поле Start in
, будет содержать выходные файлы.