Powershell 实现系统静音

目录

  • [一. 前提](#一. 前提)
  • [二. 代码实现](#二. 代码实现)
    • [2.1 方式1](#2.1 方式1)
    • [2.2 方式2](#2.2 方式2)

一. 前提

⏹在进行商用的作业的时候所用到的电脑每次使用时,总是会发生声音,每次手动去关闭感觉很烦,于是使用Powershell写了个简单的脚本来实现系统静音。


二. 代码实现

2.1 方式1

⏹这种方式只适用于中文操作系统,其他语言的操作系统不可用。

  • [char]0x57C8对应汉字是
  • [char]0x57C8最终会被解析成音量静音键,从而实现静音。
powershell 复制代码
$wsShell = New-Object -ComObject WScript.Shell
$wsShell.SendKeys([char]0x57C8)

2.2 方式2

0xAD 是 静音键(Mute key)的虚拟键码(VK_VOLUME_MUTE)

  • 这种方式和操作系统语言、编码、输入法完全无关。
  • 适用于所有 Windows(中文、日文、英文都行)。

Add-Type -TypeDefinition

  • 在C#代码中引入Windows底层的user32.dll,然后封装为类
  • 然后通过Add-Type在Powershell中引入C#代码,调用Windows的底层api
powershell 复制代码
# 引入C#代码
Add-Type -TypeDefinition @'
using System;
using System.Runtime.InteropServices;

public class Keyboard {
    [DllImport("user32.dll", SetLastError = true)]
    public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo);
}
'@

# 按下静音键
[Keyboard]::keybd_event(0xAD, 0, 0, [UIntPtr]::Zero)
# 松开静音键
[Keyboard]::keybd_event(0xAD, 0, 2, [UIntPtr]::Zero) 
相关推荐
HoKis3 天前
Powershell 向CMD窗口发送CTRL+C(优雅结束控制台应用程序)
ffmpeg·powershell·cmd
龙泉寺天下行走13 天前
[powershell 入门]第9天:PowerShell 安全、代码签名与企业部署 作业及深度解析
安全·powershell
課代表14 天前
bat 批处理文件中 PowerShell 命令换行问题
符号·参数·powershell·批处理·换行·续行符·管道符
龙泉寺天下行走15 天前
[Powershell 入门教程]第10天:综合项目实战与进阶
powershell
龙泉寺天下行走20 天前
[powershell 入门教程]第9天:PowerShell 安全、代码签名与企业部署
安全·powershell
課代表20 天前
PowerShell 字符转 UniCode 编码
字符编码·类型转换·unicode·powershell·批处理·转义·[char]
艾莉丝努力练剑23 天前
【Git:企业级开发模型】Git企业级Git工作流实战:基于Git Flow的分支模型与开发流程
服务器·git·ubuntu·gitee·centos·powershell·企业级开发模型
charlee441 个月前
Git使用经验总结8-Git仓库历史记录清除
git·powershell·敏感信息·仓库重置·历史重写
tq10862 个月前
一个简单的 PowerShell REPL 脚本
powershell