Windows: начать новый скрытый процесс (без окна) - PullRequest
2 голосов
/ 20 января 2012

Я хочу выполнить стороннюю программу (в моем случае VLC) без появления окна в Windows. Я запускаю свою Java-программу как службу Windows, которая работает нормально, но когда я запускаю VLC, используя Runtime.exec(), появляется окно, независимо от того, что я делаю. Существуют аргументы командной строки для VLC, которые предотвращают GUI, но затем появляется черная консоль - не намного лучше.

Итак: есть идеи, как запустить внешнюю программу из Java, чтобы не отображалось видимое окно? (В Mac OS X он отлично работает, и я предполагаю, что Linux будет таким же)

Я знаю, что есть способ напрямую интегрировать libVLC в вашу Java-программу, но этот вариант у меня не работает.

Ответы [ 2 ]

1 голос
/ 20 января 2012

Возможно, есть лучшее решение, чем это, но это должно работать.

Если у вас установлен 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 с этим сценарием, он должен сам закрыться и не может выдать ошибку, из-за которой он зависает. Если это произойдет, он будет зависать до выключения или до закрытия через диспетчер задач.

0 голосов
/ 20 января 2012

Вместо вызова двоичного файла VLC непосредственно в вашей консоли, попробуйте вызвать start для этой команды (т. Е. start c:\vlc.exe).

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

...