我想执行一个第三方程序(在我的情况下,VLC)没有任何窗口popup在Windows中。 我正在运行我的Java程序作为一个Windows服务工作正常,但是当我启动VLC使用Runtime.exec()
然后popup一个窗口,不pipe我做什么。 VLC有一些命令行参数可以阻止GUI,但是会popup一个黑色的控制台 – 效果并不好。
所以:任何想法如何从Java启动一个外部程序,所以没有可见的窗口显示? (它在Mac OS X中工作得很好,我认为Linux将是相同的)
我知道有一种方法可以直接将libVLC
集成到您的Java程序中,但该选项对我无效。
有可能比这更好的解决方案,但这应该工作。
如果您安装了Windows脚本(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控制台。 你所要做的就是用start vlc
创建一个.bat
文件。
注意:如果你用这个脚本执行一个.bat
文件,它必须关闭,并且不能抛出导致它挂起的错误。 如果这样做,它会一直停留,直到关闭,或直到通过任务管理器关闭。
不要直接在控制台命令中调用VLC二进制文件,而是尝试调用start
()命令(即start c:\vlc.exe
)。
请注意,这个调用将立即返回(如果你的应用程序依赖于返回的调用来确定VLC何时被终止,那么它将不得不产生其他的方式)。