Как начать смену рабочего стола слайд-шоу в Windows 7 - PullRequest
4 голосов
/ 08 августа 2009

Я пытаюсь вызвать изменение слайд-шоу на рабочем столе, но не могу найти общедоступный API для этого ...

Чем ближе я стал к тому, чтобы увидеть имя методов, которые используют (они используют COM-объект, но я не знаю CLSID для его создания).

Я уже знаю, как изменить обои на рабочем столе (я уже делаю это), мне нужен способ запуска перехода в режиме слайд-шоу (впервые для Windows 7).

1 Ответ

4 голосов
/ 09 августа 2009

Это не отвечает на ваш вопрос, и вы, возможно, уже решили его, но если запущен механизм слайд-шоу на рабочем столе (как я его назову) (если вы вызываете «Персонализация»> «Фон рабочего стола») затем выберите «Фоны рабочего стола Windows» из выпадающего меню «Расположение изображения», затем вы увидите, как фон постепенно исчезает - это движок), затем вы можете использовать интерфейс IActiveDesktop , вызвав «SetWallpaper» 'с изображением JPEG, а затем' ApplyChanges 'со следующими параметрами:

AD_APPLY_ALL | AD_APPLY_FORCE | AD_APPLY_BUFFERED_REFRESH

Когда вы это сделаете, вы заметите, что эффект перехода слайд-шоу используется, чтобы показать обои, которые вы указали. Прекрасный.

Однако перезагрузите компьютер (или убейте Explorer.exe и перезапустите его), и тот же вызов не будет выполнять переход, он просто изменит фон в старом, мгновенном виде. Некоторые раскопки со Spy ++ показывают, что когда движок слайд-шоу работает, фактический рабочий стол FolderView больше не находится под «Диспетчером программ» в отношении окна «родитель / потомок», он принадлежит новому окну «WorkerW», которое находится внутри Проводника (связывает хорошо с вашим стеком вызовов выше). Другими словами, он берет на себя управление окном рабочего стола от Progman.

Итак, вам нужно выяснить, как заставить Explorer инициализировать нового владельца окна рабочего стола («механизм слайд-шоу»), а затем вы можете использовать интерфейс IActiveDesktop для изменения фона.

...