Mercurial > servermonitor
diff ServerMonitor/Win32Helpers.cs @ 4:3142e52cbe69
Lots more progress
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Sun, 10 Feb 2019 20:51:26 -0500 |
parents | |
children | 052aa62cb42a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ServerMonitor/Win32Helpers.cs Sun Feb 10 20:51:26 2019 -0500 @@ -0,0 +1,88 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ServerMonitorApp +{ + class Win32Helpers + { + [DllImport("user32.dll")] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool FlashWindowEx(ref FLASHWINFO pwfi); + + [StructLayout(LayoutKind.Sequential)] + public struct FLASHWINFO + { + public UInt32 cbSize; + public IntPtr hwnd; + public UInt32 dwFlags; + public UInt32 uCount; + public UInt32 dwTimeout; + } + + public enum FlashWindowFlags : uint + { + /// <summary> + /// Stop flashing. The system restores the window to its original state. + /// </summary> + FLASHW_STOP = 0, + + /// <summary> + /// Flash the window caption + /// </summary> + FLASHW_CAPTION = 1, + + /// <summary> + /// Flash the taskbar button. + /// </summary> + FLASHW_TRAY = 2, + + /// <summary> + /// Flash both the window caption and taskbar button. + /// This is equivalent to setting the FLASHW_CAPTION | FLASHW_TRAY flags. + /// </summary> + FLASHW_ALL = 3, + + /// <summary> + /// Flash continuously, until the FLASHW_STOP flag is set. + /// </summary> + FLASHW_TIMER = 4, + + /// <summary> + /// Flash continuously until the window comes to the foreground. + /// </summary> + FLASHW_TIMERNOFG = 12 + } + + public static bool FlashWindowEx(Form form) + { + IntPtr hWnd = form.Handle; + FLASHWINFO fInfo = new FLASHWINFO(); + + fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo)); + fInfo.hwnd = hWnd; + fInfo.dwFlags = (uint)FlashWindowFlags.FLASHW_TRAY; + fInfo.uCount = 10; + fInfo.dwTimeout = 0; + + return FlashWindowEx(ref fInfo); + } + + public static bool StopFlashWindowEx(Form form) + { + IntPtr hWnd = form.Handle; + FLASHWINFO fInfo = new FLASHWINFO(); + + fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo)); + fInfo.hwnd = hWnd; + fInfo.dwFlags = (uint)FlashWindowFlags.FLASHW_STOP; + fInfo.dwTimeout = 0; + + return FlashWindowEx(ref fInfo); + } + } +}