Я рисую анимацию на фоне рабочего стола, но в слое за иконками рабочего стола.Как показано здесь. Я получаю рабочее окно с этим кодом:
IntPtr progman = IntPtr.Zero;
IntPtr workerw = IntPtr.Zero;
IntPtr dc = IntPtr.Zero;
progman = W32.FindWindow("Progman", null);
UIntPtr result = UIntPtr.Zero;
W32.SendMessageTimeout(progman, 0x052C, new UIntPtr(0), IntPtr.Zero, W32.SendMessageTimeoutFlags.SMTO_NORMAL, 1000, out result);
W32.EnumWindows(new W32.EnumWindowsProc((tophandle, topparamhandle) =>
{
IntPtr p = W32.FindWindowEx(tophandle, IntPtr.Zero, "SHELLDLL_DefView", "");
listview = p;
if (p != IntPtr.Zero)
{
workerw = W32.FindWindowEx(IntPtr.Zero, tophandle, "WorkerW", "");
}
return true;
}), IntPtr.Zero);
dc = W32.GetDCEx(workerw, IntPtr.Zero, (W32.DeviceContextValues)0x403);
if (dc != IntPtr.Zero)
{
Graphics g = Graphics.FromHdc(dc);
}
Рисование в этом окне (графика) работает нормально, но я не могу очистить нарисованные объекты.Я на самом деле устанавливаю окно работника в качестве родителя формы, и я рисую эту форму, поэтому мне просто нужно очистить его, когда оно должно изменить окно или что-то в этом роде.Вот изображение формы, созданной как дочерний элемент окна workerw. Как некоторые из вас сказали, что это не предназначено, так есть ли альтернативы для создания анимированных обоев?Спасибо за ваше время.