我有一个.exe来静音我的Windows电脑。它是从C ++程序编译的。当我从命令行运行此.exe时,它可以很好地工作,使我的计算机静音或取消静音。但是,我正在尝试从Java程序运行它,我没有得到任何错误,但它实际上也没有运行,或者至少不正确,因为卷没有切换。我一直在四处寻找它可能是什么,没有什么明显的,因为执行.exe的调用返回0并且没有错误。
任何想法都会有所帮助。谢谢。
这是编译成“mute.exe”的c ++代码:
void VolumeControl::mute() {
HWND hwnd = GetConsoleWindow();
SendMessage(hwnd, WM_APPCOMMAND, (WPARAM)hwnd, APPCOMMAND_VOLUME_MUTE << 16);
}
这是调用它的java代码(我尝试过使用运行时exec以及进程构建器):
Process p = Runtime.getRuntime().exec("mute.exe");
int exitVal = p.waitFor();
System.out.println(exitVal);
//Process process = new ProcessBuilder("mute.exe", "-u").start();
//Runtime rt = Runtime.getRuntime() ;
//rt.exec("mute.exe");