Processing Ajax...

Title
Close Dialog

Message

Confirm
Close Dialog

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