为什么我的桌面屏幕变黑?

时间:2016-12-07 12:37:34

标签: python image python-2.7 ctypes desktop

我正在尝试将图像制作为桌面图像 我的图片路径:

#Image Path
import random,os
folder= r"C:\\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"
a=random.choice(os.listdir(folder))
print(a)

打开图像:

#Opening the Image
from PIL import Image
file = folder+'\\'+a
Image.open(file).show()

将图像作为我的桌面图像:

#Making the image as desktop image
import ctypes
image_path = file
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, image_path, 3)

现在的问题是找到图像路径并且它还会打开图像。但是不是将打开的图像设置为桌面图像,而是将桌面图像设置为黑色。

4 个答案:

答案 0 :(得分:1)

这将诀窍:

import random,os
import ctypes 

folder= r"C:\Users\rkp10\AppData\Local\Google\Chrome\User Data\Default\Extensions\laookkfknpbbblfpciffpaejjkokdgca\0.91.6_0\backgrounds"
a=random.choice(os.listdir(folder)) 
print(a) file = folder+ '\\' +a
SPI_SETDESKWALLPAPER = 20 
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER , 0, file, 3)

你的文件夹变量

中有一个“\”

答案 1 :(得分:0)

这篇文章:SystemParametersInfo sets wallpaper completly black (using SPI_SETDESKWALLPAPER)我想解释这个问题。 似乎Win32Api是为C编写的,因此需要特定格式的字符串 - 空终止的char数组。

不完全确定如何在Python中传递这样的数据,但希望这会指向正确的方向

答案 2 :(得分:0)

不是黑色,而是您的背景变实。转到背景设置,将背景设置为黑色以外的纯色。然后,将背景更改为图片。现在,运行您的代码。您将看到问题是它变为纯色,而不是黑色图像。

答案 3 :(得分:0)

下一个解决方案也有帮助:

import os
import ctypes

folder = r"C:\folder"
file_name = r"back.jpg"

full_path = os.path.join(folder, file_name)
wallpaper = bytes(full_path, 'utf-8')

ctypes.windll.user32.SystemParametersInfoA(20, 0, wallpaper, 3)