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,一经查实,立即删除!

相关文章

无题

今天开会&#xff0c;其实不开都知道要讲啥&#xff0c;教代会上就是讨论关于薪金的问题&#xff0c;钱拿的越来越少&#xff0c;所以要想拿钱的话只有写论文&#xff0c;带比赛&#xff0c;或参加比赛&#xff0c;获奖后才能有钱发&#xff0c;哎~~~昨天晚上xz说她确定要ky&am…

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

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

2005/7/15[随便写写]

通过面试开始在公司正式上班了&#xff0c;去的很早&#xff0c;呵呵&#xff0c;以为里面的员工都需要敲卡的&#xff0c;不想给大家一个坏印象。环境么给我的感觉氛围很不错&#xff0c;没有传统IT行业那种被项目赶得焦头烂额的样子&#xff0c;可是我的性格决定了我不是那种…

java nature_Java Nature.nsf方法代码示例

import com.hankcs.hanlp.corpus.tag.Nature; //导入方法依赖的package包/类/*** 执行识别* param segResult 粗分结果* param wordNetOptimum 粗分结果对应的词图* param wordNetAll 全词图*/public static void Recognition(List segResult, WordNet wordNetOptimum, WordNet…

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

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

java在文件的后面添加_java 在file的尾部添加数据的两种方法总结

java 在file的尾部添加数据的两种方法总结问题描述:在文件的末尾追加内容方法1:利用RandomAccessFile类1.将randomAccessFile模式设置为rw2将randomAccessFile移动(seek)到文件末尾3追加数据4关闭流方法2:利用FileWriter类1.将FileWriter构造方法第二个参数置为true.表示在尾部…

日产汽车源码遭泄露

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

开源纯C#轻量级数据库引擎:SharpHSQL 1.0.3.0版本

开源纯C#轻量级数据库引擎&#xff1a;SharpHSQL 1.0.3.0版本出了&#xff12;个多月了&#xff0c;我一直没有给大家报道&#xff0c;这是目前唯一发现的用纯C#开发的稳定的轻量级数据库引擎&#xff0c;在我的建议下&#xff0c;已经支持Unicode&#xff0c;包括简体中文了。…

mysql约束深入了解_MySQL 的约束

约束是添加在列上, 用来约束列的!1. 主键约束(表中的某行的唯一标识)主键的特点:非空唯一被引用创建表时, 指定主键的两种方式&#xff1a;// 需求: 指定 sid 列为主键列, 即为 sid 列添加主键约束// 第一种方式:CREATE TABLE stu(sid CHAR(6) PRIMARY KEY,sname VARCHAR(20),a…

中台的故事结束了?

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

[ZT]C#的多线程机制探索(2)

三.线程的同步和通讯——生产者和消费者假设这样一种情况&#xff0c;两个线程同时维护一个队列&#xff0c;如果一个线程对队列中添加元素&#xff0c;而另外一个线程从队列中取用元素&#xff0c;那么我们称添加元素的线程为生产者&#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有相同之处&#…

java 并发 面试题_阿里面试官总结10个经典技术题:Java多线程与并发面试题

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼5&#xff0c;有哪些不同的线程生命周期&#xff1f;当我们在Java程序中新建一个线程时&#xff0c;它的状态是New。当我们调用线程的start()方法时&#xff0c;状态被改变为Runnable。线程调度器会为Runnable线程池中的线程分配CP…

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

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

Gentle.Net学习笔记四:修改代码,使用Oracle数据库

开始使用Gentle.Net的时候,我使用编译好的类库,可是不久就发现,如果要更好的利用Gentle.Net,你就不得不做一些修改,所以,还是使用源代码的方式为好. 使用源代码,Gentle.Net作为三个项目添加的解决方案中, Gentle.Common;Gentle.FrameWork;Gentle.Provider.Oracle (根据项目的…

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这里我…

ValidationSummary 控件

真是有些郁闷到现在这个控件还一直没有用过.. 直到今天才发现.可以解决错误信息提示排版上的问题. 单独用RequiredFieldValidator 我以前一直没有设Text属性.结果一错误就是errormessage这边就出来了设了text后就不会显示errormessage 而显示Text了这个时候如果有ValidationSum…

java static new_java静态类new的对象是否能被回收?

问题来自一个线上GC频繁的应用&#xff0c;观察到老年代一直gc下不去导致应用被gc STW卡主假死&#xff0c;检查代码发现这样一段代码&#xff0c;感觉可疑代码如下&#xff1a;public class WriteEsWork {public static void write(List<EsIndexInfo> esList, String in…