Moved sleep mode prevention to separate method of IDisplayMonitor.
This commit is contained in:
parent
a8025ad2a1
commit
0dcbe9e5b6
6 changed files with 24 additions and 20 deletions
|
@ -18,11 +18,15 @@ namespace SafeExamBrowser.Contracts.Monitoring
|
|||
event DisplayChangedEventHandler DisplayChanged;
|
||||
|
||||
/// <summary>
|
||||
/// Sets the desktop working area to accommodate to the taskbar's height, removes the configured wallpaper (if possible) and
|
||||
/// prevents the computer from entering sleep mode or turning its display(s) off.
|
||||
/// Sets the desktop working area to accommodate to the taskbar's height and removes the configured wallpaper (if possible).
|
||||
/// </summary>
|
||||
void InitializePrimaryDisplay(int taskbarHeight);
|
||||
|
||||
/// <summary>
|
||||
/// Prevents the computer from entering sleep mode and turning its display(s) off.
|
||||
/// </summary>
|
||||
void PreventSleepMode();
|
||||
|
||||
/// <summary>
|
||||
/// Resets the desktop working area and wallpaper to their previous (initial) state.
|
||||
/// </summary>
|
||||
|
|
|
@ -38,11 +38,6 @@ namespace SafeExamBrowser.Contracts.WindowsApi
|
|||
/// </exception>
|
||||
void DeregisterSystemEvent(IntPtr handle);
|
||||
|
||||
/// <summary>
|
||||
/// Prevents Windows from entering sleep mode and keeps all displays powered on.
|
||||
/// </summary>
|
||||
void DisableSleep();
|
||||
|
||||
/// <summary>
|
||||
/// Empties the clipboard.
|
||||
/// </summary>
|
||||
|
@ -115,6 +110,11 @@ namespace SafeExamBrowser.Contracts.WindowsApi
|
|||
/// </exception>
|
||||
void PostCloseMessageToShell();
|
||||
|
||||
/// <summary>
|
||||
/// Prevents Windows from entering sleep mode and keeps all displays powered on.
|
||||
/// </summary>
|
||||
void PreventSleepMode();
|
||||
|
||||
/// <summary>
|
||||
/// Registers a system hook for the given keyboard interceptor.
|
||||
/// </summary>
|
||||
|
|
|
@ -34,6 +34,7 @@ namespace SafeExamBrowser.Core.Behaviour.Operations
|
|||
logger.Info("Initializing working area...");
|
||||
SplashScreen.UpdateText(TextKey.SplashScreen_InitializeWorkingArea);
|
||||
|
||||
displayMonitor.PreventSleepMode();
|
||||
displayMonitor.InitializePrimaryDisplay(taskbar.GetAbsoluteHeight());
|
||||
displayMonitor.StartMonitoringDisplayChanges();
|
||||
}
|
||||
|
|
|
@ -34,7 +34,12 @@ namespace SafeExamBrowser.Monitoring.Display
|
|||
{
|
||||
InitializeWorkingArea(taskbarHeight);
|
||||
InitializeWallpaper();
|
||||
PreventSleepMode();
|
||||
}
|
||||
|
||||
public void PreventSleepMode()
|
||||
{
|
||||
nativeMethods.PreventSleepMode();
|
||||
logger.Info("Disabled sleep mode and display timeout.");
|
||||
}
|
||||
|
||||
public void ResetPrimaryDisplay()
|
||||
|
@ -94,12 +99,6 @@ namespace SafeExamBrowser.Monitoring.Display
|
|||
}
|
||||
}
|
||||
|
||||
private void PreventSleepMode()
|
||||
{
|
||||
nativeMethods.DisableSleep();
|
||||
logger.Info("Disabled sleep mode and display timeout.");
|
||||
}
|
||||
|
||||
private void ResetWorkingArea()
|
||||
{
|
||||
var identifier = GetIdentifierForPrimaryDisplay();
|
||||
|
|
|
@ -50,7 +50,7 @@ namespace SafeExamBrowser.UserInterface
|
|||
{
|
||||
var height = (int) TransformToPhysical(Width, Height).Y;
|
||||
|
||||
logger.Info($"Calculated absolute taskbar height is {height}px.");
|
||||
logger.Info($"Calculated physical taskbar height is {height}px.");
|
||||
|
||||
return height;
|
||||
});
|
||||
|
|
|
@ -94,11 +94,6 @@ namespace SafeExamBrowser.WindowsApi
|
|||
EventDelegates.TryRemove(handle, out EventProc d);
|
||||
}
|
||||
|
||||
public void DisableSleep()
|
||||
{
|
||||
Kernel32.SetThreadExecutionState(EXECUTION_STATE.CONTINUOUS | EXECUTION_STATE.DISPLAY_REQUIRED | EXECUTION_STATE.SYSTEM_REQUIRED);
|
||||
}
|
||||
|
||||
public void EmptyClipboard()
|
||||
{
|
||||
var success = true;
|
||||
|
@ -225,6 +220,11 @@ namespace SafeExamBrowser.WindowsApi
|
|||
}
|
||||
}
|
||||
|
||||
public void PreventSleepMode()
|
||||
{
|
||||
Kernel32.SetThreadExecutionState(EXECUTION_STATE.CONTINUOUS | EXECUTION_STATE.DISPLAY_REQUIRED | EXECUTION_STATE.SYSTEM_REQUIRED);
|
||||
}
|
||||
|
||||
public void RegisterKeyboardHook(IKeyboardInterceptor interceptor)
|
||||
{
|
||||
var hook = new KeyboardHook(interceptor);
|
||||
|
|
Loading…
Reference in a new issue