diff --git a/hass-workstation-service/Domain/Sensors/MicrophoneProcessSensor.cs b/hass-workstation-service/Domain/Sensors/MicrophoneProcessSensor.cs index 17ec875..f834740 100644 --- a/hass-workstation-service/Domain/Sensors/MicrophoneProcessSensor.cs +++ b/hass-workstation-service/Domain/Sensors/MicrophoneProcessSensor.cs @@ -4,11 +4,14 @@ using System; using System.Linq; using System.Runtime.InteropServices; using System.Runtime.Versioning; +using System.Collections.Generic; namespace hass_workstation_service.Domain.Sensors { public class MicrophoneProcessSensor : AbstractSensor { + private List processes = new List(); + public MicrophoneProcessSensor(MqttPublisher publisher, int? updateInterval = null, string name = "MicrophoneProcess", Guid id = default) : base(publisher, name ?? "MicrophoneProcess", updateInterval ?? 10, id) { } @@ -38,92 +41,52 @@ namespace hass_workstation_service.Domain.Sensors } [SupportedOSPlatform("windows")] - private string IsMicrophoneInUseRegistry() + private void CheckLastUsed(RegistryKey key) { - using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone")) + foreach (var subKeyName in key.GetSubKeyNames()) { - foreach (var subKeyName in key.GetSubKeyNames()) + // NonPackaged has multiple subkeys + if (subKeyName == "NonPackaged") { - // NonPackaged has multiple subkeys - if (subKeyName == "NonPackaged") + using (var nonpackagedkey = key.OpenSubKey(subKeyName)) { - using (var nonpackagedkey = key.OpenSubKey(subKeyName)) - { - foreach (var nonpackagedSubKeyName in nonpackagedkey.GetSubKeyNames()) - { - using (var subKey = nonpackagedkey.OpenSubKey(nonpackagedSubKeyName)) - { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) - { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return nonpackagedSubKeyName; - } - } - } - } - } + CheckLastUsed(nonpackagedkey); } - else + } + else + { + using (var subKey = key.OpenSubKey(subKeyName)) { - using (var subKey = key.OpenSubKey(subKeyName)) + if (subKey.GetValueNames().Contains("LastUsedTimeStop")) { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) + var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; + if (endTime <= 0) { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return subKeyName; - } + this.processes.Add(subKeyName); } } } } } + } + + [SupportedOSPlatform("windows")] + private string IsMicrophoneInUseRegistry() + { + using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone")) + { + CheckLastUsed(key); + } using (var key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\microphone")) { - foreach (var subKeyName in key.GetSubKeyNames()) - { - // NonPackaged has multiple subkeys - if (subKeyName == "NonPackaged") - { - using (var nonpackagedkey = key.OpenSubKey(subKeyName)) - { - foreach (var nonpackagedSubKeyName in nonpackagedkey.GetSubKeyNames()) - { - using (var subKey = nonpackagedkey.OpenSubKey(nonpackagedSubKeyName)) - { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) - { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return nonpackagedSubKeyName; - } - } - } - } - } - } - else - { - using (var subKey = key.OpenSubKey(subKeyName)) - { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) - { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return subKeyName; - } - } - } - } - } + CheckLastUsed(key); } + if (this.processes.Count() > 0) + { + return String.Join(",", this.processes.ToArray()); + } return "off"; } } diff --git a/hass-workstation-service/Domain/Sensors/WebcamProcessSensor.cs b/hass-workstation-service/Domain/Sensors/WebcamProcessSensor.cs index 9210654..a35b390 100644 --- a/hass-workstation-service/Domain/Sensors/WebcamProcessSensor.cs +++ b/hass-workstation-service/Domain/Sensors/WebcamProcessSensor.cs @@ -4,15 +4,18 @@ using System; using System.Linq; using System.Runtime.InteropServices; using System.Runtime.Versioning; +using System.Collections.Generic; namespace hass_workstation_service.Domain.Sensors { public class WebcamProcessSensor : AbstractSensor { + private List processes = new List(); + public WebcamProcessSensor(MqttPublisher publisher, int? updateInterval = null, string name = "WebcamProcess", Guid id = default) : base(publisher, name ?? "WebcamProcess", updateInterval ?? 10, id) { } - + public override string GetState() { if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows)) @@ -38,92 +41,52 @@ namespace hass_workstation_service.Domain.Sensors } [SupportedOSPlatform("windows")] - private string IsWebCamInUseRegistry() + private void CheckLastUsed(RegistryKey key) { - using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam")) + foreach (var subKeyName in key.GetSubKeyNames()) { - foreach (var subKeyName in key.GetSubKeyNames()) + // NonPackaged has multiple subkeys + if (subKeyName == "NonPackaged") { - // NonPackaged has multiple subkeys - if (subKeyName == "NonPackaged") + using (var nonpackagedkey = key.OpenSubKey(subKeyName)) { - using (var nonpackagedkey = key.OpenSubKey(subKeyName)) - { - foreach (var nonpackagedSubKeyName in nonpackagedkey.GetSubKeyNames()) - { - using (var subKey = nonpackagedkey.OpenSubKey(nonpackagedSubKeyName)) - { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) - { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return nonpackagedSubKeyName; - } - } - } - } - } + CheckLastUsed(nonpackagedkey); } - else + } + else + { + using (var subKey = key.OpenSubKey(subKeyName)) { - using (var subKey = key.OpenSubKey(subKeyName)) + if (subKey.GetValueNames().Contains("LastUsedTimeStop")) { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) + var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; + if (endTime <= 0) { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return subKeyName; - } + this.processes.Add(subKeyName); } } } } } + } + + [SupportedOSPlatform("windows")] + private string IsWebCamInUseRegistry() + { + using (var key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam")) + { + CheckLastUsed(key); + } using (var key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\CapabilityAccessManager\ConsentStore\webcam")) { - foreach (var subKeyName in key.GetSubKeyNames()) - { - // NonPackaged has multiple subkeys - if (subKeyName == "NonPackaged") - { - using (var nonpackagedkey = key.OpenSubKey(subKeyName)) - { - foreach (var nonpackagedSubKeyName in nonpackagedkey.GetSubKeyNames()) - { - using (var subKey = nonpackagedkey.OpenSubKey(nonpackagedSubKeyName)) - { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) - { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return nonpackagedSubKeyName; - } - } - } - } - } - } - else - { - using (var subKey = key.OpenSubKey(subKeyName)) - { - if (subKey.GetValueNames().Contains("LastUsedTimeStop")) - { - var endTime = subKey.GetValue("LastUsedTimeStop") is long ? (long)subKey.GetValue("LastUsedTimeStop") : -1; - if (endTime <= 0) - { - return subKeyName; - } - } - } - } - } + CheckLastUsed(key); } + if (this.processes.Count() > 0) + { + return String.Join(",", this.processes.ToArray()); + } return "off"; } }