Java:如何执行未附加到Windows控制台的进程?

mst*_*rap 8 java console process

两者的Runtime.exec()以及的ProcessBuilder似乎控制台连接到启动的进程.在Windows 7上,可以看到任务管理器中弹出conhost.exe.我的问题是,我正在尝试启动的C进程执行以下测试以确定它是否具有可以发出提示的控制台窗口:

HANDLE cons = CreateFile("CONOUT$", GENERIC_WRITE,
            FILE_SHARE_WRITE, NULL, OPEN_EXISTING,
            FILE_ATTRIBUTE_NORMAL, NULL);

if (cons != INVALID_HANDLE_VALUE) {
   // Prompt user; this makes my application hang
}
Run Code Online (Sandbox Code Playgroud)

是否有可能使用Java以上层测试失败的方式启动C进程以避免提示?

Cur*_*isB 0

尝试这个:

ProcessBuilder pb = new ProcessBuilder( "cmd", "/C start /B myprogram.exe param1 param2" );
Run Code Online (Sandbox Code Playgroud)

/B标志告诉start不要创建一个新的控制台,尽管我不知道从 Java 调用时它本身是否start最终会分配一个控制台。