ignore explorer process

This commit is contained in:
dlprows 2023-10-04 00:17:57 -06:00
parent 6aaa32cf92
commit d1df235af0

View File

@ -1,12 +1,8 @@
using BarRaider.SdTools;
using FocusVolumeControl.AudioSessions;
using FocusVolumeControl.AudioSessions;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
namespace FocusVolumeControl.AudioHelpers;
@ -27,6 +23,18 @@ public class AudioHelper
}
}
private Process GetProcessById(int id)
{
try
{
return Process.GetProcessById(id);
}
catch
{
return null;
}
}
public IAudioSession FindSession(List<Process> processes)
{
var results = new ActiveAudioSessionWrapper();
@ -55,7 +63,12 @@ public class AudioHelper
sessionEnumerator.GetSession(i, out var session);
session.GetProcessId(out var sessionProcessId);
var audioProcess = Process.GetProcessById(sessionProcessId);
var audioProcess = GetProcessById(sessionProcessId);
if(audioProcess == null)
{
continue;
}
var index = processes.FindIndex(x => x.Id == sessionProcessId || x.ProcessName == audioProcess?.ProcessName);
@ -99,7 +112,7 @@ public class AudioHelper
lock (_lock)
{
var processes = GetPossibleProcesses();
var processIds = processes.Select(x => x.Id).ToArray();
var processIds = processes?.Select(x => x.Id).ToArray();
if (_currentProcesses == null || !_currentProcesses.SequenceEqual(processIds))
{
@ -145,7 +158,7 @@ public class AudioHelper
if (handle == IntPtr.Zero)
{
return null;
return new List<Process>();
}
var ids = Native.GetProcessesOfChildWindows(handle);
@ -157,6 +170,11 @@ public class AudioHelper
.Select(x => Process.GetProcessById(x))
.ToList();
if(processes.FirstOrDefault()?.ProcessName == "explorer")
{
return new List<Process>();
}
try
{
//note. in instances where you launch a game from steam. this ends up mapping the process to both steam and to the game. which is unfortunate