잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).
여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.
감사합니다. -현록
현록의 기록저장소
원클릭 배율(DPI) 변경 본문
[PC원격제어/help] - 원클릭 모니터변경 종결 (다중모니터,해상도,주사율,배율,회전,위치,...)
위 포스트에서 소개한 기능이 더 강력하므로, 위의 포스트를 추천합니다.
디스플레이 설정의 "텍스트, 앱 및 기타 항목의 크기 변경" 부분을 원클릭으로 수정하는 파일들입니다.
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명령구문을 사용할겁니다.
먼저, 아래 파일을 다운 받거나,
빈 메모장을 연 후, 아래와 같이 입력하고, 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)
}
또, 아래 파일도 다운받거나,
빈 메모장을 열고 아래와 같이 적습니다.
. $PSScriptRoot\Set-DPI.ps1
Set-DPI 0
(100%는 0,
125%는 1,
150%는 2,
175%는 3)
이걸 원하는 UTF-8로 파일명.ps로 저장합니다.
이 파일들은 위의 Set-DPI.ps1 과 같은 곳에 위치시킵니다.
마지막으로, 아래 파일도 다운받거나,
빈 메모장을 열고 아래와 같이 접습니다.
@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
(위의 파일들이 모두 압축되어 있습니다.)
'PC원격제어 > help' 카테고리의 다른 글
원클릭 모니터변경 종결 (다중모니터,해상도,주사율,배율,회전,위치,...) (11) | 2023.02.03 |
---|---|
원클릭 마우스 정확도 향상 끄기 (5) | 2022.09.21 |
해상도 추가하기 (1) | 2020.03.15 |
VB-CABLE(가상 케이블) (4) | 2020.02.29 |
원클릭 해상도 변경 (주사율(Hz) 추가, 모니터 지정 추가) (41) | 2019.05.16 |
잘못된 정보가 있다면, 꼭 댓글로 알려주세요(비로그인 익명도 가능).
여러분의 피드백이 저와 방문자 모두를 올바른 정보로 인도할 수 있습니다.
감사합니다. -현록