我想做的是在Windows中更改桌面墙纸。
为此,我使用以下代码:
import ctypes
import Image
pathToBmp = "PATH TO BMP FILE"
SPI_SETDESKWALLPAPER = 20
ctypes.windll.user32.SystemParametersInfoA(SPI_SETDESKWALLPAPER, 0, pathToBmp , 0)
这在我运行.py文件时有效,当我使用py2exe对其进行转换并在当前用户下运行该exe时也有效,但是当我以SYSTEM身份运行该exe时,当前用户背景不会改变。
这当然是意料之中的。但是我不知道如何解决。
顺便说一句,您的解决方案是否更改了当前用户背景或所有用户背景都没有关系。
感谢您的时间。
最佳答案
如何在注册表中创建值键:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
每当用户登录时,这都会改变背景。
要尝试,请编写此脚本,并将其命名为
SetDesktopBackground.py
,例如您喜欢的任何位置:#!python
from ctypes import *
from os import path
SPI_SETDESKWALLPAPER = 0x14
SPIF_UPDATEINIFILE = 0x1
lpszImage = path.join(path.dirname(path.realpath(__file__)), 'your_image.jpg')
SystemParametersInfo = windll.user32.SystemParametersInfoA
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, lpszImage, SPIF_UPDATEINIFILE)
不要忘记将一些图像
your_image.jpg
放在同一目录中。然后打开注册表编辑器:Start > Search > type regedit.exe
然后转到路径:
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
右键单击并选择
New > String Value
,然后为该值键入您喜欢的任何名称。右键单击此新值,然后选择
Modify
,在Data Value
字段中输入:"C:\Python26\pythonw.exe" "C:\Path\To\SetDesktopBackground.py"
要对其进行测试,请注销并再次登录。每当此用户登录时,背景都应更改。
那是手动的方式,您可以在安装过程中在应用程序中使用_winreg创建值:
#!python
from _winreg import *
from sys import executable
from os import path
subkey = 'Software\\Microsoft\\Windows\\CurrentVersion\\Run'
script = 'C:\\Path\\To\\SetDesktopBackground.py'
pythonw = path.join(path.dirname(executable), 'pythonw.exe')
hKey = OpenKey(HKEY_CURRENT_USER, subkey, 0, KEY_SET_VALUE)
SetValueEx(hKey, 'MyApp', 0, REG_SZ, '"{0}" "{1}"'.format(pythonw, script))
CloseKey(hKey)
关于python - 在系统中为用户更改Python中的墙纸,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14426475/