211 lines
7.8 KiB
Python
211 lines
7.8 KiB
Python
import glob
|
|
import os
|
|
import time
|
|
|
|
import win32api
|
|
import win32con
|
|
import win32gui
|
|
|
|
## some of these tests will fail for systems prior to XP
|
|
|
|
for pname in (
|
|
## Set actions all take an unsigned int in pvParam
|
|
"SPI_GETMOUSESPEED",
|
|
"SPI_GETACTIVEWNDTRKTIMEOUT",
|
|
"SPI_GETCARETWIDTH",
|
|
"SPI_GETFOREGROUNDFLASHCOUNT",
|
|
"SPI_GETFOREGROUNDLOCKTIMEOUT",
|
|
## Set actions all take an unsigned int in uiParam
|
|
"SPI_GETWHEELSCROLLLINES",
|
|
"SPI_GETKEYBOARDDELAY",
|
|
"SPI_GETKEYBOARDSPEED",
|
|
"SPI_GETMOUSEHOVERHEIGHT",
|
|
"SPI_GETMOUSEHOVERWIDTH",
|
|
"SPI_GETMOUSEHOVERTIME",
|
|
"SPI_GETSCREENSAVETIMEOUT",
|
|
"SPI_GETMENUSHOWDELAY",
|
|
"SPI_GETLOWPOWERTIMEOUT",
|
|
"SPI_GETPOWEROFFTIMEOUT",
|
|
"SPI_GETBORDER",
|
|
## below are winxp only:
|
|
"SPI_GETFONTSMOOTHINGCONTRAST",
|
|
"SPI_GETFONTSMOOTHINGTYPE",
|
|
"SPI_GETFOCUSBORDERHEIGHT",
|
|
"SPI_GETFOCUSBORDERWIDTH",
|
|
"SPI_GETMOUSECLICKLOCKTIME",
|
|
):
|
|
print(pname)
|
|
cget = getattr(win32con, pname)
|
|
cset = getattr(win32con, pname.replace("_GET", "_SET"))
|
|
orig_value = win32gui.SystemParametersInfo(cget)
|
|
print("\toriginal setting:", orig_value)
|
|
win32gui.SystemParametersInfo(cset, orig_value + 1)
|
|
new_value = win32gui.SystemParametersInfo(cget)
|
|
print("\tnew value:", new_value)
|
|
# On Vista, some of these values seem to be ignored. So only "fail" if
|
|
# the new value isn't what we set or the original
|
|
if new_value != orig_value + 1:
|
|
assert new_value == orig_value
|
|
print("Strange - setting %s seems to have been ignored" % (pname,))
|
|
win32gui.SystemParametersInfo(cset, orig_value)
|
|
assert win32gui.SystemParametersInfo(cget) == orig_value
|
|
|
|
|
|
# these take a boolean value in pvParam
|
|
# change to opposite, check that it was changed and change back
|
|
for pname in (
|
|
"SPI_GETFLATMENU",
|
|
"SPI_GETDROPSHADOW",
|
|
"SPI_GETKEYBOARDCUES",
|
|
"SPI_GETMENUFADE",
|
|
"SPI_GETCOMBOBOXANIMATION",
|
|
"SPI_GETCURSORSHADOW",
|
|
"SPI_GETGRADIENTCAPTIONS",
|
|
"SPI_GETHOTTRACKING",
|
|
"SPI_GETLISTBOXSMOOTHSCROLLING",
|
|
"SPI_GETMENUANIMATION",
|
|
"SPI_GETSELECTIONFADE",
|
|
"SPI_GETTOOLTIPANIMATION",
|
|
"SPI_GETTOOLTIPFADE",
|
|
"SPI_GETUIEFFECTS",
|
|
"SPI_GETACTIVEWINDOWTRACKING",
|
|
"SPI_GETACTIVEWNDTRKZORDER",
|
|
):
|
|
print(pname)
|
|
cget = getattr(win32con, pname)
|
|
cset = getattr(win32con, pname.replace("_GET", "_SET"))
|
|
orig_value = win32gui.SystemParametersInfo(cget)
|
|
print(orig_value)
|
|
win32gui.SystemParametersInfo(cset, not orig_value)
|
|
new_value = win32gui.SystemParametersInfo(cget)
|
|
print(new_value)
|
|
assert orig_value != new_value
|
|
win32gui.SystemParametersInfo(cset, orig_value)
|
|
assert win32gui.SystemParametersInfo(cget) == orig_value
|
|
|
|
|
|
# these take a boolean in uiParam
|
|
# could combine with above section now that SystemParametersInfo only takes a single parameter
|
|
for pname in (
|
|
"SPI_GETFONTSMOOTHING",
|
|
"SPI_GETICONTITLEWRAP",
|
|
"SPI_GETBEEP",
|
|
"SPI_GETBLOCKSENDINPUTRESETS",
|
|
"SPI_GETKEYBOARDPREF",
|
|
"SPI_GETSCREENSAVEACTIVE",
|
|
"SPI_GETMENUDROPALIGNMENT",
|
|
"SPI_GETDRAGFULLWINDOWS",
|
|
"SPI_GETSHOWIMEUI",
|
|
):
|
|
cget = getattr(win32con, pname)
|
|
cset = getattr(win32con, pname.replace("_GET", "_SET"))
|
|
orig_value = win32gui.SystemParametersInfo(cget)
|
|
win32gui.SystemParametersInfo(cset, not orig_value)
|
|
new_value = win32gui.SystemParametersInfo(cget)
|
|
# Some of these also can't be changed (eg, SPI_GETSCREENSAVEACTIVE) so
|
|
# don't actually get upset.
|
|
if orig_value != new_value:
|
|
print("successfully toggled", pname, "from", orig_value, "to", new_value)
|
|
else:
|
|
print("couldn't toggle", pname, "from", orig_value)
|
|
win32gui.SystemParametersInfo(cset, orig_value)
|
|
assert win32gui.SystemParametersInfo(cget) == orig_value
|
|
|
|
|
|
print("SPI_GETICONTITLELOGFONT")
|
|
lf = win32gui.SystemParametersInfo(win32con.SPI_GETICONTITLELOGFONT)
|
|
orig_height = lf.lfHeight
|
|
orig_italic = lf.lfItalic
|
|
print("Height:", orig_height, "Italic:", orig_italic)
|
|
lf.lfHeight += 2
|
|
lf.lfItalic = not lf.lfItalic
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETICONTITLELOGFONT, lf)
|
|
new_lf = win32gui.SystemParametersInfo(win32con.SPI_GETICONTITLELOGFONT)
|
|
print("New Height:", new_lf.lfHeight, "New Italic:", new_lf.lfItalic)
|
|
assert new_lf.lfHeight == orig_height + 2
|
|
assert new_lf.lfItalic != orig_italic
|
|
|
|
lf.lfHeight = orig_height
|
|
lf.lfItalic = orig_italic
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETICONTITLELOGFONT, lf)
|
|
new_lf = win32gui.SystemParametersInfo(win32con.SPI_GETICONTITLELOGFONT)
|
|
assert new_lf.lfHeight == orig_height
|
|
assert new_lf.lfItalic == orig_italic
|
|
|
|
|
|
print("SPI_GETMOUSEHOVERWIDTH, SPI_GETMOUSEHOVERHEIGHT, SPI_GETMOUSEHOVERTIME")
|
|
w = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERWIDTH)
|
|
h = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERHEIGHT)
|
|
t = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERTIME)
|
|
print("w,h,t:", w, h, t)
|
|
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETMOUSEHOVERWIDTH, w + 1)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETMOUSEHOVERHEIGHT, h + 2)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETMOUSEHOVERTIME, t + 3)
|
|
new_w = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERWIDTH)
|
|
new_h = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERHEIGHT)
|
|
new_t = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERTIME)
|
|
print("new w,h,t:", new_w, new_h, new_t)
|
|
assert new_w == w + 1
|
|
assert new_h == h + 2
|
|
assert new_t == t + 3
|
|
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETMOUSEHOVERWIDTH, w)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETMOUSEHOVERHEIGHT, h)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETMOUSEHOVERTIME, t)
|
|
new_w = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERWIDTH)
|
|
new_h = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERHEIGHT)
|
|
new_t = win32gui.SystemParametersInfo(win32con.SPI_GETMOUSEHOVERTIME)
|
|
assert new_w == w
|
|
assert new_h == h
|
|
assert new_t == t
|
|
|
|
|
|
print("SPI_SETDOUBLECLKWIDTH, SPI_SETDOUBLECLKHEIGHT")
|
|
x = win32api.GetSystemMetrics(win32con.SM_CXDOUBLECLK)
|
|
y = win32api.GetSystemMetrics(win32con.SM_CYDOUBLECLK)
|
|
print("x,y:", x, y)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDOUBLECLKWIDTH, x + 1)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDOUBLECLKHEIGHT, y + 2)
|
|
new_x = win32api.GetSystemMetrics(win32con.SM_CXDOUBLECLK)
|
|
new_y = win32api.GetSystemMetrics(win32con.SM_CYDOUBLECLK)
|
|
print("new x,y:", new_x, new_y)
|
|
assert new_x == x + 1
|
|
assert new_y == y + 2
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDOUBLECLKWIDTH, x)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDOUBLECLKHEIGHT, y)
|
|
new_x = win32api.GetSystemMetrics(win32con.SM_CXDOUBLECLK)
|
|
new_y = win32api.GetSystemMetrics(win32con.SM_CYDOUBLECLK)
|
|
assert new_x == x
|
|
assert new_y == y
|
|
|
|
|
|
print("SPI_SETDRAGWIDTH, SPI_SETDRAGHEIGHT")
|
|
dw = win32api.GetSystemMetrics(win32con.SM_CXDRAG)
|
|
dh = win32api.GetSystemMetrics(win32con.SM_CYDRAG)
|
|
print("dw,dh:", dw, dh)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDRAGWIDTH, dw + 1)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDRAGHEIGHT, dh + 2)
|
|
new_dw = win32api.GetSystemMetrics(win32con.SM_CXDRAG)
|
|
new_dh = win32api.GetSystemMetrics(win32con.SM_CYDRAG)
|
|
print("new dw,dh:", new_dw, new_dh)
|
|
assert new_dw == dw + 1
|
|
assert new_dh == dh + 2
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDRAGWIDTH, dw)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDRAGHEIGHT, dh)
|
|
new_dw = win32api.GetSystemMetrics(win32con.SM_CXDRAG)
|
|
new_dh = win32api.GetSystemMetrics(win32con.SM_CYDRAG)
|
|
assert new_dw == dw
|
|
assert new_dh == dh
|
|
|
|
|
|
orig_wallpaper = win32gui.SystemParametersInfo(Action=win32con.SPI_GETDESKWALLPAPER)
|
|
print("Original: ", orig_wallpaper)
|
|
for bmp in glob.glob(os.path.join(os.environ["windir"], "*.bmp")):
|
|
print(bmp)
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, Param=bmp)
|
|
print(win32gui.SystemParametersInfo(Action=win32con.SPI_GETDESKWALLPAPER))
|
|
time.sleep(1)
|
|
|
|
win32gui.SystemParametersInfo(win32con.SPI_SETDESKWALLPAPER, Param=orig_wallpaper)
|