Windows: запуск нового скрытого процесса (без окна)



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



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



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

562   2  

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

    Ничего не найдено.