문제

데스크탑 배경화면을 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가 사용할 레지스트리 값 집합을 알 수 있도록 하는 메커니즘을 찾아야 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top