我有一个python程序:-
import ctypes
import time
while True:
path = r"path to image.jpg"
res = ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 0)
time.sleep(3)
连续将当前的桌面墙纸更改为image.jpg。我已使用带有--noconsole标志的pyinstaller将其转换为可执行文件。
接下来,我有一个服务,检查该可执行文件是否未运行,然后启动它...
现在问题是可执行文件成功启动,在任务管理器中报告,但是墙纸未更改,并且res的值为0。我仔细检查了一下,我很确定图像在指定的路径中。此外,如果通过双击执行该可执行文件,则可以完美运行。
我知道该服务无法执行具有某种GUI的程序,但这就是为什么我禁用了可执行程序的控制台...如何运作?
首先,您应授予程序管理员特权。而且有效。
import ctypes
import time
import sys
def is_admin():
try:
return ctypes.windll.shell32.IsUserAnAdmin()
except:
return False
if is_admin():
while True:
path = "004.jpg"
res = ctypes.windll.user32.SystemParametersInfoW(20, 0, path, 0)
time.sleep(3)
else:
if sys.version_info[0] == 3:
ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
else:
ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)