Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

Confirm
Close Dialog

Stop All Taskbar Button Flashing

Description
Stops all the taskbar buttons from flashing on all taskbars.
Language
C#.net
Minimum Version
Created By
Nukem
Contributors
-
Date Created
Dec 26, 2014
Date Last Modified
Dec 26, 2014

Scripted Function (Macro) Code

using System;
using System.Drawing;
using System.Runtime.InteropServices;

// The 'windowHandle' parameter will contain the window handle for the:
// - Active window when run by hotkey
// - Window Location target when run by a Window Location rule
// - TitleBar Button owner when run by a TitleBar Button
// - Jump List owner when run from a Taskbar Jump List
// - Currently focused window if none of these match
public static class DisplayFusionFunction
{
	public static void Run(IntPtr windowHandle)
	{
		ScriptHelper.EnumWindows(EnumWindowsCallback);
	}

	public static bool EnumWindowsCallback(IntPtr windowHandle, IntPtr lParam)
	{
		ScriptHelper.DisableWindowFlash(windowHandle);
		return true;
	}
}

public static class ScriptHelper
{
	public delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);

	[DllImport("user32.dll")]
	[return: MarshalAs(UnmanagedType.Bool)]
	private static extern bool EnumWindows(EnumWindowsProc enumProc, IntPtr lParam);

	[DllImport("user32.dll")]
	[return: MarshalAs(UnmanagedType.Bool)]
	private static extern bool FlashWindowEx(ref FLASHWINFO pwfi);

	//Stop flashing. The system restores the window to its original state. 
	public const UInt32 FLASHW_STOP = 0; 

	[StructLayout(LayoutKind.Sequential)]
	private struct FLASHWINFO
	{
		public UInt32 cbSize;
		public IntPtr hwnd;
		public UInt32 dwFlags;
		public UInt32 uCount;
		public UInt32 dwTimeout;
	}

	public static bool EnumWindows(EnumWindowsProc enumProc)
	{
		return EnumWindows(enumProc, IntPtr.Zero);
	}

	public static bool DisableWindowFlash(IntPtr windowHandle)
	{
		FLASHWINFO fInfo = new FLASHWINFO();
		fInfo.cbSize = Convert.ToUInt32(Marshal.SizeOf(fInfo));
		fInfo.hwnd = windowHandle;
		fInfo.dwFlags = FLASHW_STOP;
		fInfo.uCount = 0;
		fInfo.dwTimeout = 0;
		return FlashWindowEx(ref fInfo);
	}
}