Skip to content

Commit b56346f

Browse files
committed
feat: Add volume control
1 parent 67b4efa commit b56346f

File tree

2 files changed

+52
-7
lines changed

2 files changed

+52
-7
lines changed

ApplicationMuter.csproj

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
<PropertyGroup>
44
<OutputType>Exe</OutputType>
5-
<TargetFramework>net8.0-windows</TargetFramework>
5+
<TargetFramework>net8.0-windows10.0.17763.0</TargetFramework>
66
<ImplicitUsings>enable</ImplicitUsings>
77
<Nullable>enable</Nullable>
88
<StartupObject>Program</StartupObject>
@@ -19,13 +19,20 @@
1919
<DebugType>embedded</DebugType>
2020
</PropertyGroup>
2121

22+
<ItemGroup>
23+
<Compile Remove="build\**" />
24+
<EmbeddedResource Remove="build\**" />
25+
<None Remove="build\**" />
26+
</ItemGroup>
27+
2228
<ItemGroup>
2329
<Content Include="Assets\Icon.ico" />
2430
</ItemGroup>
2531

2632
<ItemGroup>
2733
<PackageReference Include="GlobalHotKeys.Windows" Version="0.1.0" />
2834
<PackageReference Include="NAudio" Version="2.2.1" />
35+
<PackageReference Include="Microsoft.Toolkit.Uwp.Notifications" Version="7.1.3" />
2936
</ItemGroup>
3037

3138
</Project>

Program.cs

Lines changed: 44 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,37 +3,75 @@
33
using GlobalHotKeys;
44
using GlobalHotKeys.Native.Types;
55
using System.Runtime.InteropServices;
6+
using Microsoft.Toolkit.Uwp.Notifications;
67

78
internal class Program
89
{
910
private static void Main() => new Program().MainAsync().GetAwaiter().GetResult();
1011

1112
private async Task MainAsync()
1213
{
13-
Console.WriteLine("Starting");
14-
await Task.Delay(2000);
15-
16-
_ = NativeMethods.FreeConsole();
1714
HideConsoleWindow();
1815

1916
using var hotKeyManager = new HotKeyManager();
2017
using var subscription = hotKeyManager.HotKeyPressed.Subscribe(HotKeyPressed);
21-
using var shift1 = hotKeyManager.Register(VirtualKeyCode.VK_F1, Modifiers.Control);
18+
_ = hotKeyManager.Register(VirtualKeyCode.VK_F1, Modifiers.Control);
19+
_ = hotKeyManager.Register(VirtualKeyCode.VK_F2, Modifiers.Control);
20+
_ = hotKeyManager.Register(VirtualKeyCode.VK_F3, Modifiers.Control);
2221

2322
void HotKeyPressed(HotKey hotKey)
2423
{
2524
var processId = this.GetActiveWindowProcessId();
2625
var soundDevice = this.GetSoundDevice(processId);
2726

2827
if (soundDevice != null)
29-
soundDevice.SimpleAudioVolume.Mute = !soundDevice.SimpleAudioVolume.Mute;
28+
{
29+
if (hotKey.Key == VirtualKeyCode.VK_F1 && hotKey.Modifiers == Modifiers.Control)
30+
{
31+
32+
soundDevice.SimpleAudioVolume.Mute = !soundDevice.SimpleAudioVolume.Mute;
33+
34+
new ToastContentBuilder()
35+
.SetToastScenario(ToastScenario.Default)
36+
.SetToastDuration(ToastDuration.Short)
37+
.AddText($"ℹ️ {(soundDevice.SimpleAudioVolume.Mute ? "Muted" : "Unmuted")} '{soundDevice.DisplayName}'")
38+
.Show();
39+
}
40+
else if (hotKey.Key == VirtualKeyCode.VK_F2 && hotKey.Modifiers == Modifiers.Control)
41+
{
42+
if (soundDevice.SimpleAudioVolume.Volume - 0.05f >= 0)
43+
{
44+
Console.WriteLine(soundDevice.SimpleAudioVolume.Volume - 0.05f);
45+
soundDevice.SimpleAudioVolume.Volume = soundDevice.SimpleAudioVolume.Volume - 0.05f;
46+
}
47+
else
48+
{
49+
Console.WriteLine(0f);
50+
soundDevice.SimpleAudioVolume.Volume = 0f;
51+
}
52+
}
53+
else if (hotKey.Key == VirtualKeyCode.VK_F3 && hotKey.Modifiers == Modifiers.Control)
54+
{
55+
if (soundDevice.SimpleAudioVolume.Volume + 0.05f <= 1)
56+
{
57+
Console.WriteLine(soundDevice.SimpleAudioVolume.Volume + 0.05f);
58+
soundDevice.SimpleAudioVolume.Volume = soundDevice.SimpleAudioVolume.Volume + 0.05f;
59+
}
60+
else
61+
{
62+
Console.WriteLine(1f);
63+
soundDevice.SimpleAudioVolume.Volume = 1f;
64+
}
65+
}
66+
}
3067
}
3168

3269
await Task.Delay(-1);
3370
}
3471

3572
private static void HideConsoleWindow()
3673
{
74+
_ = NativeMethods.FreeConsole();
3775
IntPtr hWnd = NativeMethods.GetConsoleWindow();
3876
_ = NativeMethods.ShowWindow(hWnd, NativeMethods.SW_HIDE);
3977
}

0 commit comments

Comments
 (0)