Здравствуйте. А кто знает каким образом можно отловить событие перерисовки экрана рабочего стола и нарисовать в нем какую то свою информацию??
Что то вроде дополненной реальности чтоли.
Попытался сделать вот так:
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);
}
}
Но получается что он все время рисует поверх уже имеющихся данных и изначально прозрачный прямоугольник все время докрашивается пока не станет чисто красным.