目录
- [一. 前提](#一. 前提)
- [二. 代码实现](#二. 代码实现)
-
- [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)