繁体   English   中英

如何在 python 中设置桌面背景? (视窗)

[英]How do I set the desktop background in python? (windows)

这就是我正在尝试的:

import ctypes
import os
drive = "F:\\"
folder = "Keith's Stuff"
image = "midi turmes.png"
image_path = os.path.join(drive, folder, image)
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3)

基本上,这段代码显然应该将桌面背景设置为midi turmes.png,它改变了桌面,但是,由于某些奇怪的原因,它总是一个绿色背景(我在windows中的个性化设置是图像后面的绿色背景)如何我要解决这个问题并使桌面看起来像这样吗?: http://i.imgur.com/VqMZF6H.png

以下对我有用。 我正在使用 Windows 10 64 位和 Python 3。

import os
import ctypes
from ctypes import wintypes

drive = "c:\\"
folder = "test"
image = "midi turmes.png"
image_path = os.path.join(drive, folder, image)

SPI_SETDESKWALLPAPER  = 0x0014
SPIF_UPDATEINIFILE    = 0x0001
SPIF_SENDWININICHANGE = 0x0002

user32 = ctypes.WinDLL('user32')
SystemParametersInfo = user32.SystemParametersInfoW
SystemParametersInfo.argtypes = ctypes.c_uint,ctypes.c_uint,ctypes.c_void_p,ctypes.c_uint
SystemParametersInfo.restype = wintypes.BOOL
print(SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, image_path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE))

重要的部分是确保在使用SystemParametersInfoA时为image_path使用 Unicode 字符串,如果使用SystemParametersInfoW则使用字节字符串。 请记住,在 Python 3 中,字符串是默认的 Unicode。

设置argtypesrestype也是一个好习惯。 您甚至可以“撒谎”并将第三个 argtypes 参数设置为SystemParametersInfoWc_wchar_p ,然后 ctypes 将验证您传递的是 Unicode 字符串而不是字节字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM