首页 > 编程语言 >C#改变系统音量

C#改变系统音量

时间:2024-10-24 17:13:12浏览次数:4  
标签:KEYEVENTF C# MapVirtualKey VK VOLUME 改变 音量 keybd event

通过模拟音量键输入方式实现

[DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, UInt32 dwFlags, UInt32 dwExtraInfo);

[DllImport("user32.dll")]
static extern Byte MapVirtualKey(UInt32 uCode, UInt32 uMapType);

private const byte VK_VOLUME_MUTE = 0xAD;
private const byte VK_VOLUME_DOWN = 0xAE;
private const byte VK_VOLUME_UP = 0xAF;
private const UInt32 KEYEVENTF_EXTENDEDKEY = 0x0001;
private const UInt32 KEYEVENTF_KEYUP = 0x0002;

/// <summary>
/// 改变系统音量大小,增加
/// </summary>
public static void VolumeUp()
{
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_UP, MapVirtualKey(VK_VOLUME_UP, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}

/// <summary>
/// 改变系统音量大小,减小
/// </summary>
public static void VolumeDown()
{
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_DOWN, MapVirtualKey(VK_VOLUME_DOWN, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}

/// <summary>
/// 改变系统音量大小,静音
/// </summary>
public static void Mute()
{
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY, 0);
keybd_event(VK_VOLUME_MUTE, MapVirtualKey(VK_VOLUME_MUTE, 0), KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}

标签:KEYEVENTF,C#,MapVirtualKey,VK,VOLUME,改变,音量,keybd,event
From: https://www.cnblogs.com/QJZY/p/18499962

相关文章

  • java项目cpu占用高排查方法(chatgpt)
    Java项目中CPU占用持续过高的问题可能与多种因素有关,比如死循环、线程问题、垃圾回收频繁等。以下是排查Java项目CPU占用过高的常见步骤和方法:1.初步诊断系统层面问题使用系统工具初步检查CPU占用高的进程和线程情况:使用top命令:找出哪个Java进程(PID)占用了较高......
  • 2024牛客暑期多校训练营9 B.Break Sequence
    设\(f_i\)表示最后一个区间以\(a_i\)结尾的方案总数,也即前\(i\)个数的方案总数。最后的答案是\(f_n\)。很容易得到转移方程:\[f_i=\sum_{j=1}^{i-1}f_j\]其中,需要保证\(a_i\sima_j\)是一个合法区间才能累加,这个检查的过程可以通过\(j\)倒序并计算不合法的数的个......
  • OCR视图识别(Tess4J)
    1.概述图片文字识别OCR(OpticalCharacterRecognition,光学字符识别)是指电子设备(例如扫描仪或数码相机)检查纸上打印的字符,通过检测暗、亮的模式确定其形状,然后用字符识别方法将形状翻译成计算机文字的过程2.Tess4j快速入门1.导入依赖<dependencies><dependency>......
  • element-ui 时间组件date-picker 去掉“此刻”二字
    用element-ui的时间组件时,想去掉“此刻”二字官方文档没有提供去掉这个的属性,网上查了一下,主要是通过给这个标签添加css属性,display:none,来隐藏。但是我在组件内的<el-col:span="span"><el-form-item:label="$t('historicalDataRetransmission.taskBeginTime')......
  • 海洋CMS忘记后台管理员密码解决方法
    如果你忘记了海洋CMS的后台管理密码,可以通过以下步骤进行重置:备份数据库:在进行任何数据库操作之前,请确保备份当前的数据库,以防止数据丢失。登录数据库:使用数据库管理工具(如phpMyAdmin)登录到你的数据库。找到用户表:寻找名为 sea_admin 的表,这是存储管理员账户信......
  • 【linux】centos7 安装openjdk-17
    下载网址:https://openjdk.org/下载地址:https://jdk.java.net/java-se-ri/17-MR1创建目录mkdir-pv/usr/local/java/解压tar-zxvf/software/openjdk-17.0.0.1+2_linux-x64_bin.tar.gz-C/usr/local/java/进入目录cd/usr/local/java/cdjdk-17.0.0.1/配......
  • c# grpc 保姆级教学搭建grpc框架 服务端、客户端
    文章目录基于已有class自动生成.proto文件grpc服务类库开发启动Grpc服务实现Grpc客户端基于已有class自动生成.proto文件如果想自己写.proto文件,可跳过这一步要转换成.proto文件的类usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;......
  • 蓝牙室内定位算法-蓝牙ibeacon室内定位技术方案
    随着科技的飞速发展,室内定位技术已成为现代生活中的重要组成部分。在众多室内定位技术中,蓝牙技术凭借其低功耗、高精确度以及广泛的设备兼容性,逐渐在室内定位领域崭露头角。其中,蓝牙iBeacon技术更是凭借其独特的优势,成为室内定位领域的佼佼者。本文将深入探讨蓝牙iBeacon室内定......
  • 异步&线程池【CompletableFuture&ExecutorService】
    Gulimall一、异步&线程池【ExecutorService】异步场景:为了节约时间和提高系统吞吐量做一些异步任务。异步在java中一般是使用Thread开启一个线程的方式;一、线程池线程池(ThreadPool),是一种基于池化思想的管理线程的工具,可以实现线程的复用,避免线程使用中频繁创建和......
  • CF1139C. Edgy Trees 题解 并查集
    题目链接:https://codeforces.com/problemset/problem/1139/C视频讲解:https://www.bilibili.com/video/BV1tZ1FYPELp?p=3我们可以求总方案数-不满足条件的方案数。设一个不包含黑色边的极大连通块的大小为\(sz_i\)。则答案为\[n^k-\sum\{sz_i^k\}\]示例程序:#include......