java控制系统音量_Java 控制 Windows 系统音量-Go语言中文社区

目录

1、使用 Java 来控制 Windows 系统音量,使用 JNA 调用 windows 底层 API 因为有点麻烦,所以这里采用纯 Java API结合 VBS 脚本的方式进行控制。

2、可以参考《VBS 控制 Windos 系统音量 及视频播放》,本文同样是利用 VBS 来控制,区别在于这里的 vbs 文件会用 Java 代码动态生成,灵活性更强。

Java 控制 Windows 系统音量

import java.io.File;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.OutputStreamWriter;

import java.util.logging.Logger;

/**

* Created by Administrator on 2018/6/26 0026.

* 系统工具类

*/

public class SystemUtils {

private static final Logger logger = Logger.getGlobal();

/**

* 控制电脑系统音量

*

* 约定在应用根目录下的 temp 目录中放置3个vbs文件

* volumeMute.vbs:用于静音

* volumeAdd.vbs:增加音量

* volumeMinus.vbs:减小音量

* 文件以及文件的内容采用 Java 代码动态生成,不存在时则新建,存在时则直接调用

*

* @param type 0:静音/取消静音 1:增加音量 2:减小音量

*/

public static void controlSystemVolume(String type) {

try {

if (type == null || "".equals(type.trim())) {

logger.info("type 参数为空,不进行操作...");

}

/**tempFile:vbs 文件

* vbsMessage:vbs 文件的内容*/

String vbsMessage = "";

File tempFile = null;

Runtime runtime = Runtime.getRuntime();

switch (type) {

case "0":

tempFile = new File("temp", "volumeMute.vbs");

vbsMessage = !tempFile.exists() ? "CreateObject("Wscript.Shell").Sendkeys "棴"" : "";

break;

case "1":

tempFile = new File("temp", "volumeAdd.vbs");

vbsMessage = !tempFile.exists() ? "CreateObject("Wscript.Shell").Sendkeys "棷"" : "";

break;

case "2":

tempFile = new File("temp", "volumeMinus.vbs");

vbsMessage = !tempFile.exists() ? "CreateObject("Wscript.Shell").Sendkeys "棶"" : "";

break;

default:

return;

}

/**

* 当3个vbs文件不存在时,则创建它们,应用默认编码为 utf-8 时,创建的 vbs 脚本运行时报错

* 于是使用 OutputStreamWriter 将 vbs 文件编码改成gbd就正常了

*/

if (!tempFile.exists() && !vbsMessage.equals("")) {

if (!tempFile.getParentFile().exists()) {

tempFile.getParentFile().mkdirs();

}

tempFile.createNewFile();

FileOutputStream fileOutputStream = new FileOutputStream(tempFile);

OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fileOutputStream, "GBK");

outputStreamWriter.write(vbsMessage);

outputStreamWriter.flush();

outputStreamWriter.close();

logger.info("vbs 文件不存在,新建成功:" + tempFile.getAbsolutePath());

}

runtime.exec("wscript " + tempFile.getAbsolutePath()).waitFor();

logger.info("音量控制完成.");

} catch (IOException e) {

e.printStackTrace();

} catch (InterruptedException e) {

e.printStackTrace();

}

}

public static void main(String[] args) throws InterruptedException {

logger.info("1 秒后开始静音.");

Thread.sleep(1000);

controlSystemVolume("0");

logger.info("1 秒后开始取消静音.");

Thread.sleep(1000);

controlSystemVolume("0");

logger.info("1 秒后开始增加 2 格音量,可以使用循环,持续增加音量.");

Thread.sleep(1000);

controlSystemVolume("1");

logger.info("1 秒后开始减小音量,可以使用循环持续减小.");

Thread.sleep(1000);

for (int i = 0; i < 3; i++) {

controlSystemVolume("2");

Thread.sleep(500);

}

}

}

5ba5a05146534a319ecf7a201000004a.gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/305878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Hook】postman工具的代码生成工具让它锦上添花

修改postman工具的代码生成工具加入response自动生成POJO代码如上图可以快速把请求这个动作转成code&#xff0c;减少重复性劳动。但是有一点我觉得可以优化下 就是返回的json如果也能自动转成代码就好了。不然在需要把json序列化成java或者csharp的POJO对象时还得自己coding转…

使用BeetleX.ESDoc构建文档搜索功能

BeetleX.ESDoc组件是基于ElasticSearch服务的文档搜索扩展组件。它在BeetleX.Elasticsearch的基础上包装一些基于文档检索的功能和方法&#xff0c;可以让你在不了解ElasticSearch API的情况下直接存储&#xff0c;删除和搜索相关信息。信息结构BeetleX.ESDoc定义了一个基础的文…

日产汽车源码遭泄露

喜欢就关注我们吧&#xff01;日产北美公司开发和使用的移动应用及内部工具的源代码于近日在网上泄露&#xff0c;原因是该公司错误配置了其中一台 Git 服务器。瑞士软件工程师 Tillie Kottmann 向 ZDNet 透露&#xff0c;此次泄露源于一台配置错误的 Bitbucket Git 服务器的信…

中台的故事结束了?

大家好&#xff0c;我是Z哥。所谓30年河东30年河西&#xff0c;最近阿里开始去中台了。这是不是意味着中台时代的落幕&#xff0c;去中心化时代的开始&#xff1f;谁都说不准。但是我们可以来思考一下这个事情背后释放出了什么样的信号。对我们普通人&#xff0c;特别是互联网行…

java树算法_Java数据结构算法(三)树

本文旨作于收集整理使用&#xff01;&#xff01;导航一、树树(Tree)是n(n≥0)个结点的有限集&#xff0c;n0称之为空树。在非空树种&#xff1a;当有且仅有一个特定的称为根(Root)的结点&#xff1b; 其余结点可以划分为m(m&#xff1e;0)个互不相交的有限集T1、T2 、…、Tm&a…

Blazor VS 传统Web应用程序

原文作者: Christian Findlay原文链接&#xff1a;https://christianfindlay.com/2020/07/09/blazor-vs-traditional-web-apps/Blazor是Microsoft团队开发的单页面应用程序&#xff08;SPA&#xff09;框架&#xff0c;它是与React&#xff0c;Angular和Vue.js有相同之处&#…

如何在 Web Forms 中引入依赖注入机制

依赖注入技术就是将一个对象注入到一个需要它的对象中&#xff0c;同时它也是控制反转的一种实现&#xff0c;显而易见&#xff0c;这样可以实现对象之间的解耦并且更方便测试和维护&#xff0c;依赖注入的原则早已经指出了&#xff0c;应用程序的高层模块不依赖于低层模块&…

python网页动图_python,tensorflow线性回归Django网页显示Gif动态图

1.工程组成2.urls.py"""Django_machine_learning_linear_regression URL ConfigurationThe urlpatterns list routes URLs to views. For more information please see:https://docs.djangoproject.com/en/2.1/topics/http/urls/Examples:Function views1. Add …

asp.net core集成CKEditor实现图片上传功能

背景本文为大家分享了asp.net core 如何集成CKEditor &#xff0c;并实现图片上传功能的具体方法&#xff0c;供大家参考&#xff0c;具体内容如下。准备工作1.visual studio 2019 开发环境2.net core 2.0 及以上版本实现方法1、新建asp.net core web项目2、下载CKEditor这里我…

看了一天小说

在公司呆了一天什么都没干&#xff0c;看了一天小说。都不知道自己啥时候变得这么堕落的&#xff0c;不过还好&#xff0c;至少小说是我喜欢看的那种&#xff0c;很热血的小说。不会有主管看到我的Blog吧&#xff0c; 明天要干点正事了&#xff0c;还是得跟自己说一下&#xff…

Blazor VS React / Angular / Vue.js

原文作者: Christian Findlay原文链接&#xff1a;https://christianfindlay.com/2020/06/04/blazor-vs-react-angular-vue-js/Blazor是一项新的Microsoft技术&#xff0c;允许开发人员使用C&#xff03;为浏览器编写代码, 本文将Blazor与其他三个常见SPA框架进行了比较&#x…

c语言的使用比例远远高于python语言对吗_Python和C语言的语法有什么不同?

随着经济发发展&#xff0c;互联网精英的缺乏越来越严重了&#xff0c;尤其是编程工程师&#xff0c;市场缺乏率极高&#xff0c;所有对于准备即将学习编程朋友&#xff0c;是一个非常的好时机Python和C语言的语法有什么不同&#xff1f;python与C的区别如下&#xff1a;1、语言…

ASP.NET 應用程式的安全性模型

本單元內容 功能 ASP.NET 應用程式依賴於許多不同元素及技術的成功交互操作。每個方案元件都提供安全性功能&#xff0c;以滿足其自身的需求。然而&#xff0c;純粹從個別元件的角度考量安全性還不夠。若要提供整體方案的安全性&#xff0c;您還必須考量元件如何彼此互動。 本單…

.NET开源5年了,这些宝藏你还没get?

从2016年微软发布.NET Core1.0&#xff0c;至今.NET开源也快5年了&#xff0c;GitHub也涌现了很多优秀的开源项目&#xff0c;关于CLR层面调优的讨论也多了起来&#xff0c;尤其是龙芯.NET开源的CLR迁移项目&#xff0c;更是让.NET进入一个全新的时代。鲁迅说过&#xff1a;菜鸟…

C#来创建和读取XML文档 [转]

C&#xff03;来创建和读取XML文档【关键词】&#xff1a;XML 录入&#xff1a;小鱼之家 来源&#xff1a;http://fisher.xundain.com 时间&#xff1a;2005-3-3 23:41:54 点击&#xff1a;85次 扩展标记语言XML&#xff08;eXtensible Markup Language&#xff09;&#xff0…

探索 .NET团队对API的设计流程

原文作者&#xff1a;steve gordon 原文链接: https://www.stevejgordon.co.uk/how-are-dotnet-apis-designed在这篇文章中&#xff0c;我想介绍一些我觉得非常有趣的东西&#xff0c;.NET 团队是如何设计API的&#xff1f;我们先来看下.NET团队面临的有哪些挑战&#xff0c;您…

mybatis mysql usegeneratedkeys_mybatis中useGeneratedKeys用法--插入数据库后获取主键值

前言&#xff1a;今天无意在mapper文件中看到useGeneratedKeys这个词&#xff0c;好奇就查了下&#xff0c;发现能解决我之前插入有外键表数据时&#xff0c;这个外键获取繁琐的问题&#xff0c;于是学习敲DEMO记录在项目中经常需要获取到插入数据的主键来保障后续操作&#xf…

Istio 知多少 | 下一代微服务的守护者

1. 引言在写完eShopOnContainers 知多少[12]&#xff1a;Envoy gateways后&#xff0c;就一直想进一步探索Service Mesh&#xff0c;最近刚在极客时间上学完《Service Mesh入门》&#xff0c;又大致浏览了一遍官方文档&#xff0c;对Istio也算有了基本的认识。下面就根据自己的…

微软家也会出错

下图是2006年2月8日微软WebCast首页的截图转载于:https://www.cnblogs.com/mssite/archive/2006/02/08/327130.html

C# 中的 null 包容运算符 “!” —— 概念、由来、用法和注意事项

在 2020 年的最后一天&#xff0c;博客园发起了一个开源项目&#xff1a;基于 .NET 的博客引擎 fluss&#xff0c;我抽空把源码下载下来看了下&#xff0c;发现在属性的定义中&#xff0c;有很多地方都用到了 null!&#xff0c;如下图所示&#xff1a;这是什么用法呢&#xff1…