Restore SEBPatch
This commit is contained in:
95
SafeExamBrowser.Monitoring/System/SystemSentinel.cs
Normal file
95
SafeExamBrowser.Monitoring/System/SystemSentinel.cs
Normal file
@@ -0,0 +1,95 @@
|
||||
/*
|
||||
* Copyright (c) 2024 ETH Zürich, IT Services
|
||||
*
|
||||
* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
*/
|
||||
|
||||
using SafeExamBrowser.Logging.Contracts;
|
||||
using SafeExamBrowser.Monitoring.Contracts.System;
|
||||
using SafeExamBrowser.Monitoring.Contracts.System.Events;
|
||||
using SafeExamBrowser.Monitoring.System.Components;
|
||||
using SafeExamBrowser.SystemComponents.Contracts.Registry;
|
||||
using SafeExamBrowser.WindowsApi.Contracts;
|
||||
|
||||
namespace SafeExamBrowser.Monitoring.System
|
||||
{
|
||||
public class SystemSentinel : ISystemSentinel
|
||||
{
|
||||
private readonly Cursors cursors;
|
||||
private readonly EaseOfAccess easeOfAccess;
|
||||
private readonly StickyKeys stickyKeys;
|
||||
private readonly SystemEvents systemEvents;
|
||||
|
||||
public event SentinelEventHandler CursorChanged;
|
||||
public event SentinelEventHandler EaseOfAccessChanged;
|
||||
public event SentinelEventHandler StickyKeysChanged;
|
||||
public event SessionChangedEventHandler SessionChanged;
|
||||
|
||||
public SystemSentinel(ILogger logger, INativeMethods nativeMethods, IRegistry registry)
|
||||
{
|
||||
cursors = new Cursors(logger, registry);
|
||||
easeOfAccess = new EaseOfAccess(logger, registry);
|
||||
stickyKeys = new StickyKeys(logger, nativeMethods);
|
||||
systemEvents = new SystemEvents(logger);
|
||||
}
|
||||
|
||||
public bool DisableStickyKeys()
|
||||
{
|
||||
return stickyKeys.Disable();
|
||||
}
|
||||
|
||||
public bool EnableStickyKeys()
|
||||
{
|
||||
return stickyKeys.Enable();
|
||||
}
|
||||
|
||||
public bool RevertStickyKeys()
|
||||
{
|
||||
return stickyKeys.Revert();
|
||||
}
|
||||
|
||||
public void StartMonitoringCursors()
|
||||
{
|
||||
cursors.CursorChanged += (args) => CursorChanged?.Invoke(args);
|
||||
cursors.StartMonitoring();
|
||||
}
|
||||
|
||||
public void StartMonitoringEaseOfAccess()
|
||||
{
|
||||
easeOfAccess.EaseOfAccessChanged += (args) => EaseOfAccessChanged?.Invoke(args);
|
||||
easeOfAccess.StartMonitoring();
|
||||
}
|
||||
|
||||
public void StartMonitoringStickyKeys()
|
||||
{
|
||||
stickyKeys.Changed += (args) => StickyKeysChanged?.Invoke(args);
|
||||
stickyKeys.StartMonitoring();
|
||||
}
|
||||
|
||||
public void StartMonitoringSystemEvents()
|
||||
{
|
||||
systemEvents.SessionChanged += () => SessionChanged?.Invoke();
|
||||
systemEvents.StartMonitoring();
|
||||
}
|
||||
|
||||
public void StopMonitoring()
|
||||
{
|
||||
cursors.StopMonitoring();
|
||||
easeOfAccess.StopMonitoring();
|
||||
stickyKeys.StopMonitoring();
|
||||
systemEvents.StopMonitoring();
|
||||
}
|
||||
|
||||
public bool VerifyCursors()
|
||||
{
|
||||
return cursors.Verify();
|
||||
}
|
||||
|
||||
public bool VerifyEaseOfAccess()
|
||||
{
|
||||
return easeOfAccess.Verify();
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user