Вопрос

Я читал в нескольких местах, что обои рабочего стола можно установить в 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

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

Это было полезно?

Решение

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

Другие советы

Я думаю, вам нужно убедиться, что «Активный рабочий стол» включен.

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

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

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

Я рекомендую только формат 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 узнать, какой набор значений реестра использовать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top