|
|
发表于 2026-2-4 13:09:56
|
显示全部楼层
**
import win32api
import win32con
import win32gui
def get_display_devices():
"""获取所有显示器设备信息"""
devices = []
devmode = win32api.EnumDisplaySettings(None, win32con.ENUM_CURRENT_SETTINGS)
# 枚举主显示器(若有多显示器,可扩展枚举逻辑)
devices.append({
"device_name": devmode.DeviceName,
"current_width": devmode.PelsWidth,
"current_height": devmode.PelsHeight,
"current_refresh": devmode.DisplayFrequency
})
return devices
def set_screen_resolution(width, height, refresh_rate=60):
"""
设置屏幕分辨率
:param width: 目标宽度(如1920)
:param height: 目标高度(如1080)
:param refresh_rate: 刷新率(默认60Hz,需显示器支持)
:return: 是否设置成功
"""
try:
# 获取主显示器设备名
devmode = win32api.EnumDisplaySettings(None, win32con.ENUM_CURRENT_SETTINGS)
device_name = devmode.DeviceName
# 配置目标分辨率参数
devmode.PelsWidth = width
devmode.PelsHeight = height
devmode.DisplayFrequency = refresh_rate
# 强制应用设置(0表示更新,1表示测试,2表示永久生效)
devmode.Fields = win32con.DM_PELSWIDTH | win32con.DM_PELSHEIGHT | win32con.DM_DISPLAYFREQUENCY
# 应用分辨率设置(需管理员权限)
result = win32api.ChangeDisplaySettings(devmode, 0)
# 检查设置结果
if result == win32con.DISP_CHANGE_SUCCESSFUL:
print(f"分辨率设置成功:{width}x{height} @ {refresh_rate}Hz")
return True
elif result == win32con.DISP_CHANGE_BADMODE:
print(f"错误:显示器不支持 {width}x{height} @ {refresh_rate}Hz 分辨率")
return False
else:
print(f"设置失败,错误码:{result}(需管理员权限运行)")
return False
except Exception as e:
print(f"设置异常:{str(e)}")
return False
# ==================== 测试使用 ====================
if __name__ == "__main__":
# 1. 先查看当前显示器信息
display_info = get_display_devices()[0]
print(f"当前分辨率:{display_info['current_width']}x{display_info['current_height']}")
# 2. 设置目标分辨率(请替换为你的显示器支持的分辨率,如1920x1080、1366x768等)
# 注意:必须是显示器“推荐分辨率”,否则会设置失败
success = set_screen_resolution(1920, 1080, 60) |
|