/* * Copyright (c) 2017 ETH Zürich, Educational Development and Technology (LET) * * 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 System; using System.Collections.Generic; using SafeExamBrowser.Contracts.WindowsApi.Types; namespace SafeExamBrowser.Contracts.WindowsApi { public interface INativeMethods { /// /// Retrieves a collection of handles to all currently open (i.e. visible) windows. /// /// /// If the open windows could not be retrieved. /// IEnumerable GetOpenWindows(); /// /// Retrieves the process identifier for the specified window handle. /// uint GetProcessIdFor(IntPtr window); /// /// Retrieves a window handle to the Windows taskbar. Returns IntPtr.Zero /// if the taskbar could not be found (i.e. if it isn't running). /// IntPtr GetShellWindowHandle(); /// /// Retrieves the process ID of the main Windows explorer instance controlling /// desktop and taskbar or 0, if the process isn't running. /// uint GetShellProcessId(); /// /// Retrieves the title of the specified window, or an empty string, if the /// given window does not have a title. /// string GetWindowTitle(IntPtr window); /// /// Retrieves the currently configured working area of the primary screen. /// /// /// If the working area could not be retrieved. /// RECT GetWorkingArea(); /// /// Hides the given window. Returns true if successful, otherwise false. /// bool HideWindow(IntPtr window); /// /// Minimizes all open windows. /// void MinimizeAllOpenWindows(); /// /// Instructs the main Windows explorer process to shut down. /// /// /// If the message could not be successfully posted. Does not apply if the process isn't running! /// void PostCloseMessageToShell(); /// /// Registers a system event which will invoke the specified callback when the foreground window has changed. /// Returns a handle to the newly registered Windows event hook. /// IntPtr RegisterSystemForegroundEvent(Action callback); /// /// Registers a system event which will invoke the specified callback when a window has received mouse capture. /// Returns a handle to the newly registered Windows event hook. /// IntPtr RegisterSystemCaptureStartEvent(Action callback); /// /// Restores the specified window to its original size and position. /// void RestoreWindow(IntPtr window); /// /// Sends a close message to the given window. /// void SendCloseMessageTo(IntPtr window); /// /// Sets the working area of the primary screen according to the given dimensions. /// /// /// If the working area could not be set. /// void SetWorkingArea(RECT bounds); /// /// Unregisters a previously registered system event. /// /// /// If the event hook could not be successfully removed. /// void UnregisterSystemEvent(IntPtr handle); } }