Обои для Windows: не просто BMP? - PullRequest
       24

Обои для Windows: не просто BMP?

3 голосов
/ 17 сентября 2008

В нескольких местах я читал, что обои для рабочего стола можно установить в HTML-документе. У кого-нибудь был успех, изменивший это программно?

Следующий фрагмент VB6 помогает мне настроить объекты для BMP, но когда я пытаюсь использовать его для HTML, я получаю красивый синий фон и ничего больше.

Dim reg As New StdRegistry

Public Function CurrentWallpaper() As String
    CurrentWallpaper = reg.ValueEx(HKEY_CURRENT_USER, "Control Panel\Desktop", "Wallpaper", REG_SZ, "")
End Function

Public Sub SetWallpaper(cFilename As Variant)
    reg.ClassKey = HKEY_CURRENT_USER
    reg.SectionKey = "Control Panel\Desktop"
    reg.ValueKey = "Wallpaper"
    reg.ValueType = REG_SZ
    reg.Default = ""
    reg.Value = cFilename
End Sub

Public Sub RefreshDesktop()
    Dim oShell As Object
    Set oShell = CreateObject("WScript.Shell")
    oShell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters", 1, True
End Sub

Возможно, есть какая-то другая настройка, которая требуется. Есть идеи?

Ответы [ 5 ]

2 голосов
/ 18 сентября 2008

Хорошо, я нашел ответ на свой вопрос, благодаря egl1044 на Experts Exchange . По сути, нужно общаться с объектом IActiveDesktop. Хорошая реализация этого в VB6 может быть найдена в VB6 - JPEG в качестве обоев (без преобразования) .

2 голосов
/ 17 сентября 2008

Я думаю, вам нужно убедиться, что "Active Desktop" включен.

Вы можете попробовать установить HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOn на 1 (найдено здесь ).

Я не пробовал, так что никаких гарантий.

1 голос
/ 17 сентября 2008

Я не уверен, есть ли для этого официальный API, но если вы настроены на это, вы можете использовать Process Monitor от Sysinternal и посмотреть, какие ключи реестра затрагиваются при установке рабочего стола HTML фон через пользовательский интерфейс. Тогда вам просто нужно повторить эти изменения в вашем коде. Однако вызов API был бы гораздо предпочтительнее с точки зрения обратной / прямой совместимости.

0 голосов
/ 17 сентября 2008

Рекомендую только формат BMP. Не используйте ActiveDesctop, потому что после этого ваш компьютер будет работать медленно.

0 голосов
/ 17 сентября 2008

Все ближе: http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/w2rkbook/gp.mspx?mfr=true <ч /> Но оказывается, что я отвлекся в пространстве политики. Что я действительно хотел, так это установить рабочий стол в пространстве пользователя и оставить настройки политики в силе. Некоторые полезные вещи были найдены здесь: http://blogs.msdn.com/coding4fun/archive/2006/10/31/912569.aspx.

Однако это не окончательное решение. Контроль над рабочими столами HTML все еще недоступен. <ч /> Кажется, что настройки HTML хранятся в HKCU \ Software \ Microsoft \ Internet Explorer \ Desktop \ General. Однако, просто хранить их здесь, кажется, недостаточно. Мне все еще нужно найти механизм, который позволяет Windows знать, какой набор значений реестра использовать.

...