在系统中为用户更换Python墙纸

2024-04-29 15:25:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我要做的是在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时,这是有效的,但是当我以系统形式运行exe时,当前用户背景不会改变。在

这当然是意料之中的。但我不知道怎么解决。在

顺便说一句,你的解决方案是否改变了当前的用户背景或者所有用户的背景都无关紧要。在

谢谢你抽出时间。在


Tags: topath代码用户imageimportspiwindows
1条回答
网友
1楼 · 发布于 2024-04-29 15:25:14

如何在注册表中创建一个值键:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

这将在用户登录时更改背景。在

要尝试它,请编写此脚本,将其命名为SetDesktopBackground.py,任何您喜欢的地方:

^{pr2}$

别忘了在同一目录下放一些图片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)

相关问题 更多 >