잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→

현록의 기록저장소

원클릭 배율(DPI) 변경 본문

PC원격제어/help

원클릭 배율(DPI) 변경

현록 2022. 5. 30. 18:23

[PC원격제어/help] - 원클릭 모니터변경 종결 (다중모니터,해상도,주사율,배율,회전,위치,...)

 

원클릭 모니터변경 종결 (다중모니터,해상도,주사율,배율,회전,위치,...)

[서론 및 소개] [사용법] [서론 및 소개] 원격 제어를 애용하면서 그동안 사용했던 모니터 설정 방법을 공유했었다. PC에 모니터를 3개나 연결해보면서 원하는 모니터 그룹만 켜두는 것이 Windows 기

ydeer.tistory.com

위 포스트에서 소개한 기능이 더 강력하므로, 위의 포스트를 추천합니다.

 

 


디스플레이 설정의 "텍스트, 앱 및 기타 항목의 크기 변경" 부분을 원클릭으로 수정하는 파일들입니다.

DPI라고도 부르는 부분입니다.

 

Windows 8~10까지는 동작 확인했으며,

Microsoft 문서에서 사용하지 않도록 권장하는 기능이라 향후 Windows 버전에 따라 작동하지 않을 수 있습니다.

(https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-systemparametersinfoa)

(SPI_SETLOGICALDPIOVERRIDE(=0x009F)는 Do not use로 되어있습니다.)

 

문서를 뒤져도 다른 버전의 DPI 세팅 기능은 없는 것 같고...

그래서 지금의 주모니터만 수정할 수 있는 것 외에 다른 모니터는 수정이 안됩니다.

주모니터 외의 다른 모니터의 DPI를 원클릭으로 수정하길 원하는건... 저도 잘 모르겠습니다.ㅠ

 

사실 DPI는 설정에서 바꾼다고 하더라도

로그오프 후 다시 들어오지 않는 한 깨지거나 흐릿한 상태로 지속되는 창들이 있는데,

그래서인지 즉각 바꾸는 방향을 원하지 않는 것 같습니다.


이 기능은 아래 개발자분의 코드와 위의 MSDN을 참고하였습니다.

(https://youtu.be/wA1Geom1NiA)



아래에 설명드릴 사용법이 난해하실 분을 위해,

맨 아래에 Sample.zip을 첨부하니, 그걸 바로 사용하셔도 됩니다.


해상도 조절을 위해 윈도우 기본 내장 PowerShell과 cmd명령구문을 사용할겁니다.
먼저, 아래 파일을 다운 받거나,

Set-DPI.ps1
0.00MB

빈 메모장을 연 후, 아래와 같이 입력하고, UTF-8로 Set-DPI.ps1 라는 이름으로 파일을 저장합니다.

Function Set-DPI { 
param ( 
[Parameter(Mandatory=$true, 
           Position = 0)] 
[int] 
$scaling
) 
$pinvokeCode = @" 
using System; 
using System.Runtime.InteropServices; 
namespace DPI
{ 
    public class SetDPI
    { 
        [DllImport("user32.dll", EntryPoint = "SystemParametersInfo")]
        public static extern bool SystemParametersInfo(
            uint uiAction,
            uint uiParam,
            uint pvParam,
            uint fWinIni);
    } 
} 
"@ 
Add-Type $pinvokeCode -ErrorAction SilentlyContinue 
[DPI.SetDPI]::SystemParametersInfo(0x009F,$scaling,$null,1) 
}

 

또, 아래 파일도 다운받거나,

DPI_100.ps1
0.00MB
DPI_125.ps1
0.00MB
DPI_150.ps1
0.00MB
DPI_175.ps1
0.00MB

빈 메모장을 열고 아래와 같이 적습니다.

. $PSScriptRoot\Set-DPI.ps1

Set-DPI 0

(100%는 0,

 125%는 1,

 150%는 2,

 175%는 3)

이걸 원하는 UTF-8로 파일명.ps로 저장합니다.

 

이 파일들은 위의 Set-DPI.ps1 과 같은 곳에 위치시킵니다.

 

마지막으로, 아래 파일도 다운받거나,

DPI_100.bat
0.00MB
DPI_125.bat
0.00MB
DPI_150.bat
0.00MB
DPI_175.bat
0.00MB

빈 메모장을 열고 아래와 같이 접습니다.

@echo off
Powershell.exe -noprofile -executionpolicy bypass -file DPI_100.ps1

마지막의 "DPI_100.ps1" 부분이 위에서 작성한 파일명과 일치하도록 해주세요.

이것도 아까의 ps1 파일들과 같은 곳에 위치시킵니다.

 

그리고 이 bat파일을 실행하기만 하면 주모니터의 DPI가 바뀝니다.

윈도우 시작 메뉴에 두고 싶으시면,

bat파일의 바로가기를

C(윈도우설치드라이브):\Users\로그온한사용자\AppData\Roaming\Microsoft\Windows\Start Menu\Programs
에 만들어주고, 모든 앱 보기 상태에서 타일 메뉴에 등록을 하면 됩니다.

(원클릭 해상도 포스트 참고)


일부러 해상도와는 분리시켰지만,

사용자가 원한다면 한꺼번에 실행되도록 할 수 있습니다.

ps1 파일들은 그대로 내버려두고,

bat 파일을 입맛에 맞게 수정하면 됩니다.

 

주모니터만 바꾼다고 가정하여,

가로모드로 해상도와 배율을 모두 수정해보겠습니다.

@echo off
D:\~~~\display.exe /device:1 /rotate:0
timeout 2
Powershell.exe -noprofile -executionpolicy bypass -file 1280_960.ps1
Powershell.exe -noprofile -executionpolicy bypass -file DPI_125.ps1

이렇게 하면 가로모드로 한 후(이미 가로면 무시)

해상도를 바꾸는 ps1을 실행한 후 곧바로 배율을 바꾸는 ps1도 실행합니다.

(회전이 완료되어야 가로모드에 맞는 해상도를 선택할 수 있으므로, 2초 기다리는 부분 있음)

 

원하시는 대로 bat을 작성하시길 바랍니다 :D

 

 


Sample.zip
0.00MB

(위의 파일들이 모두 압축되어 있습니다.)

 

 

Comments

잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).

여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.

감사합니다. -현록

후원해주실 분은 여기로→