Windowsの壁紙:BMPだけじゃないの?
-
09-06-2019 - |
質問
デスクトップの壁紙を 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 の API を使用することもできます。 プロセスモニター UI 経由で HTML デスクトップの背景を設定するときにどのレジストリ キーが操作されるかを確認します。その後、コード内でこれらの編集を繰り返すだけです。ただし、下位/上位互換性の観点からは、API 呼び出しの方がはるかに望ましいでしょう。
他のヒント
「アクティブ デスクトップ」がオンになっていることを確認する必要があると思います。
設定してみてもいいかもしれません HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer\ForceActiveDesktopOn
に 1
(見つかった ここ).
試していないので保証はありません。
わかりました。egl1044 のおかげで、私の質問に対する答えが見つかりました。 専門家交換. 。基本的に、IActiveDesktop オブジェクトと通信する必要があります。VB6 でのその優れた実装は、次の場所にあります。 VB6 - 壁紙としての JPEG (変換なし).
BMP形式のみをお勧めします。ActiveDesctop を使用すると、PC の動作が遅くなりますので、使用しないでください。
近くなってる: 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 に知らせるメカニズムを見つける必要があります。