Java Windows:启动新进程隐藏(无窗口)

Java Windows:启动新进程隐藏(无窗口),java,windows,exec,hide,vlc,Java,Windows,Exec,Hide,Vlc,我想执行第三方程序(在我的例子中是VLC),而不在Windows中弹出任何窗口。我将java程序作为Windows服务运行,运行良好,但当我使用Runtime.exec()启动VLC时,无论我做什么,都会弹出一个窗口。VLC的命令行参数会阻止GUI,但随后会弹出一个黑色控制台——这不是更好 那么:你知道如何从Java启动一个外部程序,这样就不会出现可见的窗口了吗?(它在Mac OS X中运行得很好,我想Linux也会一样) 我知道有一种方法可以直接将libVLC集成到Java程序中,但该选项对我

我想执行第三方程序(在我的例子中是VLC),而不在Windows中弹出任何窗口。我将java程序作为Windows服务运行,运行良好,但当我使用
Runtime.exec()
启动VLC时,无论我做什么,都会弹出一个窗口。VLC的命令行参数会阻止GUI,但随后会弹出一个黑色控制台——这不是更好

那么:你知道如何从Java启动一个外部程序,这样就不会出现可见的窗口了吗?(它在Mac OS X中运行得很好,我想Linux也会一样)


我知道有一种方法可以直接将
libVLC
集成到Java程序中,但该选项对我不起作用。

与其直接在控制台命令中调用VLC二进制文件,不如尝试对该命令进行调用(即
启动c:\VLC.exe


请注意,此调用将或多或少立即返回(因此,如果您的应用程序依赖于调用返回来确定VLC何时终止,它将不得不产生其他方式)。

可能有比此更好的解决方案,但这应该是可行的

如果安装了Windows脚本(Win98和更新版本上的标准版),请将以下行保存为
.vbs
文件(例如
不可见的.vbs

此脚本允许您使用以下命令不可见地运行任何
.bat
文件:

wscript.exe "C:\Path\To\File\invisible.vbs" "C:\Path\To\Another\File\BatFile.bat"
这建立在answer的基础上,因为它允许您隐藏cmd控制台。您所要做的就是创建一个
.bat
文件,其中包含
启动vlc


注意:如果使用此脚本执行
.bat
文件,它必须自行关闭,并且不能抛出导致挂起的错误。如果它这样做了,它将一直保留,直到关机或通过任务管理器关闭它。

如果您需要在VLC终止时返回
start
调用,请使用
/WAIT
选项。我尝试过了,但不起作用<代码>开始是cmd控制台的一项功能,而不是您可以执行的文件。我还尝试了
cmd/c start vlc
。工作正常,但我看到的是cmd控制台,而不是vlc控制台。也不是一个解决方案:(“。直接将
libVLC
集成到Java程序中,但该选项对我不起作用”似乎你最好解决这个问题。这是一个许可证问题。将被迫在GPL中发布我的所有代码,不幸的是,这不是一个选项:(这是一个非常糟糕的解决方法,但它有效!(我没有让
.bat
版本正常工作,而是直接从vbs脚本运行
vlc.exe
,并使用
--intf=rc
参数)。非常感谢!!更多详细信息我是如何让它工作的:一个vbs文件,内容如下:
CreateObject(“Wscript.Shell”)。运行“C:\Program Files\VideoLAN\vlc\vlc.exe”“--intf=rc”&WScript.Arguments(0)和“”,0,False
,然后通过
Runtime.getRuntime().exec(“cscript.exe\”C:\\test.vbs\”--rc host=127.0.0.1:34123\”)执行它;
。完全按照预期工作(在本例中,打开vlc telnet远程控制接口)。再次感谢!还有一个问题:你知道如何从启动的程序中获取标准吗?似乎在途中迷失了…@Daniel我不知道。我利用这项工作在幕后进行了一些文件关联,我从不需要标准输出。不过我很想知道你是如何找到它的
wscript.exe "C:\Path\To\File\invisible.vbs" "C:\Path\To\Another\File\BatFile.bat"