WinApi C# Отловить обновление рабочего стола

Здравствуйте. А кто знает каким образом можно отловить событие перерисовки экрана рабочего стола и нарисовать в нем какую то свою информацию??

Что то вроде дополненной реальности чтоли.
Попытался сделать вот так:

readonly IntPtr hwnd = GetDesktopWindow();

        protected override void WndProc(ref Message m)
        { 
            if(m.HWnd == hwnd)
            {
// СЮДА НЕ ПРИЛЕТАЕТ НИКОГДА
            }
            base.WndProc(ref m);
        }

А вот код отрисовки:

IntPtr hwnd = GetDesktopWindow();
if (hwnd != IntPtr.Zero)
{
	if (LockWindowUpdate(hwnd))
	{
		IntPtr dc = GetDCEx(hwnd, IntPtr.Zero, DeviceContextValues.Cache | DeviceContextValues.LockWindowUpdate);
		if (dc != IntPtr.Zero)
		{
			using (Graphics gr = Graphics.FromHdc(dc))
			{
				SolidBrush sbrush = new SolidBrush(Color.FromArgb(128,255,0,0));
				gr.FillRectangle(sbrush, CheckRectangle);
			}
			ReleaseDC(hwnd, dc);
		}
		LockWindowUpdate(IntPtr.Zero);
	}
}

Но получается что он все время рисует поверх уже имеющихся данных и изначально прозрачный прямоугольник все время докрашивается пока не станет чисто красным.