Windows:启动一个隐藏的新进程(无窗口)

我想执行一个第三方程序(在我的情况下,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何时被终止,那么它将不得不产生其他的方式)。