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);
+        }
+    }
+}