有没有办法用Java程序来改变系统卷?



我编写了一个Java程序,使用命令行参数来改变音频剪辑(.wav)的音量,但这似乎只是有点"软"。控制,因为它实际上不会改变实际机器运行的主音量,我必须手动按下笔记本电脑上的增加或减少音量按钮来进一步改变它。Java能够改变实际计算机的体积吗?如果有,怎么做?

我应该补充一下,我用的是Windows 10。

一个粗糙的、平台相关的解决方案:

  1. 下载NirCmd。
  2. 将据我所知是"无依赖"(无需安装)的exe发布到jar中。
  3. 要更改卷,将此exe从jar解压到临时目录(这是一个tad安全方面的棘手问题)。
  4. 使用ProcessBuilder运行它。它可以改变系统音量

它不是很好,但是,它应该可以工作。

注:请查看NirCmd的许可条件;这可能不太好接受,你可能必须把许可证作为你的应用程序的一部分。不要从堆栈溢出的答案中得到法律建议。

我本来准备让这个问题继续下去,直到我看到impossible这个词. 在放弃之前,不妨看看JNA库。这个库是专门为访问本机代码而构建的。

JNA为Java程序提供了访问本地共享库的便利除了Java代码之外不需要编写任何东西——没有JNI或本机代码必需的。此功能可与Windows的Platform/Invoke相媲美和Python的ctypes。

JNA允许您使用natural .直接调用本机函数Java方法调用。

git README中列出了一个活跃的论坛。如果没有其他问题,您可以询问/探索这个问题是否适合库的功能。

但我必须承认,即使可能,这似乎也需要相当大的努力,而且在概念上是可疑的:计算机硬件音量的设置完全掌握在计算机操作员手中。

希望Windows 11将有一个允许您更改主卷的功能。试着让这个程序触发Windows 10中现有的软件,当你按下这些键时,它会改变音量。

JavaScript——比;Windows 10中的二进制代码——>主音量旁路

最新更新