3

デスクトップの壁紙を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

おそらく、必要な他の設定がいくつかあります。何か案は?

4

5 に答える 5

2

「アクティブデスクトップ」がオンになっていることを確認する必要があると思います。

ここにあります)に設定HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOnしてみてください。1

私はそれを試したことがないので、保証はありません。

于 2008-09-17T05:40:20.490 に答える
2

さて、 Experts Exchangeの egl1044 のおかげで、私の質問に対する答えを発見しました。基本的に、IActiveDesktop オブジェクトと対話する必要があります。VB6 での適切な実装は、VB6 - JPEGs as wallpapers (without conversion) にあります。

于 2008-09-18T01:59:16.457 に答える
1

このための公式APIがあるかどうかはわかりませんが、心を込めている場合は、SysinternalのProcess Monitorを使用して、UIを介してHTMLデスクトップの背景を設定したときにどのレジストリキーが変更されるかを確認できます。次に、コードでこれらの編集を繰り返す必要があります。ただし、API呼び出しは、下位/上位互換性の観点からはるかに望ましいでしょう。

于 2008-09-17T15:28:28.423 に答える
0

BMP 形式のみをお勧めします。その後、PC の動作が遅くなるため、ActiveDesktop を使用しないでください。

于 2008-09-17T15:18:22.380 に答える
0

近づく: 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 に知らせるメカニズムを見つける必要があります。

于 2008-09-17T14:37:58.717 に答える