2013-02-08 2 views
2

Я что-то пропускаю с помощью IActiveDesktop?Эффект затухания обоев IActiveDesktop не работает после перезапуска

Sympthoms: После того, как система (Win7/Win8) перезапустит эффект затухания во время замены обоев, исчезает.

Чтобы восстановить его, мне нужно вручную перейти к «Персонализация -> Обои для рабочего стола» и установить «Местоположение изображения» из «Мои рисунки» (?) На «Обои для рабочего стола Windows», а затем назад (!). После этого эффект эффекта затухания снова прекратится до следующей перезагрузки системы.

Я не понимаю, что вернет его обратно и как остановить его. Как установить «Рабочий стол для рабочего стола Windows» программно? Какая система работает в фоновом режиме?

Сам код довольно стандартный и взят из MSDN/CodeProject.

ответ

1

Вы должны сообщить окнам, что вы хотите включить ActiveDesktop. Я говорю это каждый раз перед установкой обоев через ActiveDesktop.

public static void EnableActiveDesktop() 
{ 
    IntPtr result = IntPtr.Zero; 
    WinAPI.SendMessageTimeout(WinAPI.FindWindow("Progman", null), 0x52c, IntPtr.Zero, IntPtr.Zero, 0, 500, out result); 
} 

Вы можете увидеть это в контексте здесь: https://pulse.codeplex.com/SourceControl/changeset/view/72677#1589017