- 작성시간 : 2020/07/11 09:47
- 퍼머링크 : mcchae.egloos.com/11362310
- 덧글수 : 2
다른 리눅스나 맥도 마찬가지 이지만,



화면(디스플레이)의 두 가지 보여주는 인자가
존재하는데 하나는 해상도이고 다른 하나는 배율(스케일)에
관한 것입니다.

해상도야 그래픽카드와 모니터에 따라 지원되는 최대 해상도에서
더 작은 것으로 선택을 하면 됩니다만, 요즘처럼 FHD 보다 큰
해상도에서는 맥에서 이야기하는 레티나처럼 지원되기 위해서는
윈도우에서는 배율을 100% 보다 크게 하여 해상도가 크더라도
보여지는 것은 더 알맞고 이쁘게 보여지게 됩니다.
그런데 필요에 따라 이 배율을 프로그램으로 가져와야 하는데,
이것을 딱 가져오게 하는 것이 나오지 않더군요..
약간의 시행착오를 거쳐 알아낸 방법은,

만약 위와 같이 150%로 설정을 한 경우에는,

레지스트리에서 "컴퓨터\HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics" 키의
AppliedDPI 서브키를 읽어 이를 96으로 나누고 100을 곱하면 위의 150%가 나오게 됩니다.
이를 파이썬 코드로 구현해보면 다음과 같습니다. (파이썬 3.7)
import os, winreg
proc_arch = os.environ['PROCESSOR_ARCHITECTURE'].lower()
proc_arch64 = os.environ['PROCESSOR_ARCHITEW6432'].lower()
if proc_arch == 'x86' and not proc_arch64:
arch_key = 0
elif proc_arch == 'x86' or proc_arch == 'amd64':
arch_key = winreg.KEY_WOW64_64KEY
else:
raise Exception("Unhandled arch: %s" % proc_arch)
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r"Control Panel\Desktop\WindowMetrics", 0,
winreg.KEY_READ | arch_key)
try:
dn = winreg.QueryValueEx(key, 'AppliedDPI')
print(dn[0]//96*100)
finally:
key.Close()
어느 분께는 도움이 되셨기를 ..
덧글
정보 공유해주신 점에 진심으로 감사드립니다.
이 댓글을 보실지 모르겠지만, 도움을 받은 사람이 있다는걸 알아주셨으면 좋겠습니다 ^^
그럼 감기 조심하시고, 행복하세요.
새해 건강하고 복 많이 받으셔요~