Windows: запуск нового скрытого процесса (без окна)
Я хочу выполнить стороннюю программу (VLC в моем случае) без какого-либо окна, появляющегося в Windows. Я запускаю свою программу java как службу Windows, которая работает нормально, но когда я запускаю VLC с помощью Runtime.exec(), то появляется окно, независимо от того, что я делаю. Есть аргументы командной строки для VLC, которые препятствуют GUI, но затем появляется черная консоль - не намного лучше.
Итак: есть идеи, как запустить внешнюю программу с Java так, чтобы не было видно окна? (Он отлично работает в Mac OS X и я предполагаю, что Linux будет таким же)
Я знаю, что есть способ напрямую интегрировать libVLC в вашу программу Java, но этот вариант не работает для меня.
2 ответов:
Возможно, есть лучшее решение, чем это, но это должно работать.
Если у вас установлен Windows Scripting (стандартный на Win98 и новее), сохраните следующую строку в виде файла
.vbs(invisible.vbs, например).CreateObject("Wscript.Shell").Run """" & WScript.Arguments(0) & """", 0, FalseЭтот скрипт позволяет запускать любой файл
.batневидимо с помощью следующей команды:wscript.exe "C:\Path\To\File\invisible.vbs" "C:\Path\To\Another\File\BatFile.bat"Это основано на ответе cheeken, потому что это позволит вам скрыть консоль cmd. Все, что вам нужно сделать, это создать файл
.batс помощьюstart vlcв этом.Примечание: Если вы выполняете файл
.batс этим скриптом, он должен закрыть себя, и он не может выдать ошибку, которая заставляет его зависать. Если это произойдет, он будет оставаться до завершения работы или до тех пор, пока вы не закроете его через Диспетчер задач.
Вместо вызова двоичного файла VLC непосредственно в консольной команде, попробуйте вызвать
startпротив этой команды (т. е.start c:\vlc.exe).Обратите внимание, что этот вызов будет возвращен более или менее немедленно (поэтому, если ваше приложение зависит от возвращаемого вызова, чтобы определить, когда VLC был завершен, он должен будет дать какой-то другой способ).
Comments