Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Java程序调整扬声器音量?_Java_Volume - Fatal编程技术网

如何从Java程序调整扬声器音量?

如何从Java程序调整扬声器音量?,java,volume,Java,Volume,我正在运行Win Vista,在窗口的右下角,时钟旁边有一个扬声器图标,我可以点击它并调整音量,我想知道我的Java程序中是否有办法自动执行此操作 例如,当我的Java程序启动时,它将卷调到80,当程序退出时,它将卷调回原始级别。如果有办法达到这个效果,我不介意使用Runtime.getRuntime().exec()。Java的一个主要前提是,在它上面编写的应用程序应该可以在任何平台上工作。这就是为什么他们在Java1.4SDK中放弃了对环境变量的支持,但后来又重新启用了它。这就是为什么没有办

我正在运行Win Vista,在窗口的右下角,时钟旁边有一个扬声器图标,我可以点击它并调整音量,我想知道我的Java程序中是否有办法自动执行此操作


例如,当我的Java程序启动时,它将卷调到80,当程序退出时,它将卷调回原始级别。如果有办法达到这个效果,我不介意使用
Runtime.getRuntime().exec()

Java的一个主要前提是,在它上面编写的应用程序应该可以在任何平台上工作。这就是为什么他们在Java1.4SDK中放弃了对环境变量的支持,但后来又重新启用了它。这就是为什么没有办法用“cls”这样的命令清理Java控制台,因为它可以在某些平台上工作,但在其他平台上则不行

也就是说,您将无法从Java执行这些操作。你可以在C++中创建JNI DLL或者C++或C语言中的应用程序。 有关在C++中执行此操作的更多信息:


看看API。”这是一个关于这方面的教程,特别是(在“更改线路音量”一章中),您可以阅读如何设置音量。这些知识应该提供足够的谷歌关键词来查找示例。

我使用以下代码来模拟音量调整:

Robot robot;             // Set speaker volume to 80
try
{
  robot=new Robot();
  robot.mouseMove(1828,1178);
  robot.mousePress(InputEvent.BUTTON1_MASK);
  robot.mouseRelease(InputEvent.BUTTON1_MASK);
  robot.delay(90);
  robot.mouseMove(1828,906);
  robot.mousePress(InputEvent.BUTTON1_MASK);
  robot.mouseRelease(InputEvent.BUTTON1_MASK);
  robot.delay(260);
  robot.mousePress(InputEvent.BUTTON1_MASK);
  robot.mouseRelease(InputEvent.BUTTON1_MASK);
}
catch (AWTException ex)
{
  System.err.println("Can't start Robot: " + ex);
  System.exit(0);
}

成功了

关于控制台控制的争论被打破了。ANSI序列没有什么问题,只是Windows不支持开箱即用。@Thorbjorn我知道我的示例不适合这种情况。@EricSchafer但你可以使用C#中的Windows API(使用DllImport),对吗?或者使用jna和dll(我想与jni相同)