Обои для Windows: не просто BMP?
Я читал в нескольких местах, что обои для рабочего стола могут быть установлены в 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 ответов
Я не уверен, существует ли для этого официальный API, но если вы настроены на это, вы можете использовать Process Monitor Sysinternal и посмотреть, какие ключи реестра затрагиваются при установке фона рабочего стола HTML через пользовательский интерфейс. Тогда вам просто нужно повторить эти изменения в вашем коде. Однако вызов API был бы гораздо предпочтительнее с точки зрения обратной / прямой совместимости.
Хорошо, я нашел ответ на свой вопрос благодаря egl1044 на Экспертной бирже. По сути, нужно общаться с объектом IActiveDesktop. Хорошую реализацию этого в VB6 можно найти на VB6 - JPEG в качестве обоев (без конвертации).
Я думаю, что вы должны убедиться, что "Active Desktop" включен.
Вы можете попробовать установить HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOn
в 1
(найдено здесь).
Я не пробовал, так что никаких гарантий.
Я рекомендую только формат BMP. Не используйте ActiveDesctop, потому что ваш компьютер будет работать медленно после этого.
Как стать ближе: 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 знать, какой набор значений реестра использовать.