DPI Scaling ใน Windows 8.1 ผ่านทางบรรทัดคำสั่ง


14

ฉันต้องการสร้างแป้นพิมพ์ลัดเพื่อเปลี่ยนสเกล DPI บนเครื่องของฉันอย่างรวดเร็วและง่ายดายโดยใช้การสร้างแมโครขนาดเล็กเพื่อเรียกใช้เมื่อตรวจพบแป้นพิมพ์ลัด

ใน Windows 8.1 สามารถตั้งค่า DPI ของจอแสดงผลเดสก์ท็อปผ่านแผงควบคุม (ในภาพด้านล่าง) โดยจะมีผลทันที อีกทางหนึ่งสามารถตั้งค่ามาตราส่วนด้วยตนเองในรีจิสตรี แต่การทำเช่นนั้นต้องการให้ผู้ใช้ลงชื่อเข้าและออกหรือรีสตาร์ทเครื่องเพื่อให้มีผล (และทำงานเพื่อเลียนแบบตัวเลือก "หนึ่งระดับการปรับสำหรับการแสดงทั้งหมดของฉัน") .

ฉันจะตั้งค่าสเกล DPI ผ่านทางบรรทัดรับคำสั่งหรือโดยทางโปรแกรมได้อย่างไร

http://puu.sh/93YLV.jpg


คุณได้ลองทำการเปลี่ยนแปลงรีจิสทรีฆ่ากระบวนการสำรวจแล้วเริ่มต้นใหม่อีกครั้ง เพราะนั่นคือวิธี GUI ทั้งหมดที่จะทำในทางทฤษฎี
Ramhound

@ Ramound ไม่มีโชค อินเทอร์เฟซ GUI กำลังทำอะไรบางอย่างเพื่อรีเฟรชเดสก์ท็อปเพื่อนำการตั้งค่าไปใช้ แต่ฉันไม่แน่ใจว่าอะไรและไม่พบอะไรเกี่ยวกับมัน
FThompson

คุณแน่ใจหรือว่าการเปลี่ยนแปลงนั้นเกิดขึ้นทันที? ฉันได้รับข้อความแจ้งว่า "คุณต้องออกจากระบบคอมพิวเตอร์เพื่อใช้การเปลี่ยนแปลงเหล่านี้"
Vinayak

@Vinayak การเปลี่ยนแปลงจะเกิดขึ้นทันทีเมื่อใช้โดยกล่องโต้ตอบด้านบน ฉันจำได้ว่าเคยอ่านว่าแอปพลิเคชั่นทันทีนั้นเป็นของใหม่สำหรับ Windows 8.1 ผ่าน Windows 8 มาตรฐานดังนั้นหากคุณสนใจที่จะศึกษาความแตกต่างระหว่างเครื่องของคุณกับของฉันนั่นอาจเป็นจุดเริ่มต้น
FThompson

@Vulcan จริง ๆ แล้วฉันใช้ Windows 8.1 อย่างไรก็ตามฉันพยายามเปลี่ยนแปลงหลังจากคลิกที่Let me choose one scaling level...ช่องทำเครื่องหมายเนื่องจากตัวเลื่อนด้านบนเป็นสีเทาบนสมุดบันทึกของฉัน
Vinayak

คำตอบ:


9

รีจิสทรีคีย์ที่ถูกต้องสำหรับการตรวจสอบการปรับอิสระที่มีค่าHKCU:\Control Panel\Desktop LogPixelsข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่ารีจิสทรีที่เกี่ยวข้องกับ DPI ทั้งหมดได้ที่นี่: http://technet.microsoft.com/en-us/library/dn528846.aspx#systemนอกจากนี้ยังมีข้อมูลสำหรับกรณีเมื่อคุณเปิดใช้งานการปรับขนาดที่แตกต่างกันสำหรับแต่ละจอแสดงผล .

ฉันเขียนสคริปต์ PowerShell เล็ก ๆ ที่เปลี่ยนการปรับ DPI สำหรับจอแสดงผลทั้งหมดขึ้นอยู่กับการปรับขนาดปัจจุบันและทำการออกจากระบบของผู้ใช้ดังนั้นฉันเพียงแค่ต้องเรียกใช้สคริปต์เมื่อฉันวางอุปกรณ์ของฉันไปยังจอภาพอื่น

cd 'HKCU:\Control Panel\Desktop'
$val = Get-ItemProperty -Path . -Name "LogPixels"
if($val.LogPixels -ne 96)
{
    Write-Host 'Change to 100% / 96 dpi'
    Set-ItemProperty -Path . -Name LogPixels -Value 96
} else {
    Write-Host 'Change to 150% / 144 dpi'
    Set-ItemProperty -Path . -Name LogPixels -Value 144
}

logoff;exit

ฉันคิดว่าคุณสามารถแก้ไขได้ตามความต้องการของคุณด้วยข้อมูลของบทความ TechNet


3
ฉันขอโทษที่ไม่ตอบสนองเร็ว ทางออกที่ดี! อย่างไรก็ตามการใช้LogPixelsค่าจะใช้งานได้เฉพาะเมื่อมีการทำเครื่องหมายในช่อง "ให้ฉันเลือกระดับการปรับขนาดสำหรับการแสดงผลทั้งหมดของฉัน" สิ่งที่ฉันสังเกตเห็นเมื่อทำกับค่ารีจิสตรีด้วยตนเอง แต่ได้รับการยืนยันจากบทความ Technet ที่เชื่อมโยง นอกจากนี้โซลูชันของคุณมีข้อแม้ที่ต้องการให้ผู้ใช้ออกจากระบบ DPI ไม่ได้รับการอัพเดตหากไม่มีผู้ใช้ออกจากระบบและกลับเข้ามาอีกครั้ง ระหว่างข้อเสียสองข้อนี้ทางออกของคุณไม่ค่อยเหมาะกับฉัน แต่ +1 เหมือนกันทั้งหมดเพื่อคำตอบที่ดี
FThompson

มันไม่ทำงานบน Windows 10 :(
kokbira

3
@kokbira สำหรับการทำงานใน Windows 10 คุณจะต้องตั้งคีย์รีจิสทรีไปHKCU:\Control Panel\Desktop\Win8DpiScaling มิฉะนั้นก็จะใช้ปัจจัยปรับเริ่มต้นและไม่สนใจค่าใน1 LogPixels
FlyingFoX

1
ถ้า DPI Scale แตกต่างกันสำหรับแต่ละจอภาพแทนที่จะHKCU:\Control Panel\DesktopมองHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Shayan

1
และยังที่นี่HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Shayan

2

มีสคริปต์ PowerShell เพื่อเปลี่ยนความละเอียดหน้าจอซึ่งอาจช่วยได้ ฉันไม่รู้เลยว่าการเปลี่ยนแปลงจะเกิดขึ้นทันทีบน Windows 8.1 แต่โชคดีที่สคริปต์นี้อาจใช้ API เดียวกับที่ใช้โดยแอปเพล็ตแผงควบคุม

Set-ScreenResolution.ps1สคริปต์ที่สมบูรณ์มีอยู่ในที่เก็บสคริปต์แต่มีความยาวเกินกว่าจะสร้างได้ที่นี่

คำอธิบายโดยผู้เขียนสามารถพบได้ในบทความ:
เฮ้, Scripting Guy! ฉันจะเปลี่ยนความละเอียดการตรวจสอบเดสก์ทอปของฉันผ่าน Windows PowerShell ได้อย่างไร .

ข้อมูลบางอย่างเกี่ยวกับการใช้ก็สามารถพบได้ในบทความ:
การเปลี่ยนความละเอียดหน้าจอที่มี Powershell


ทรัพยากรเหล่านี้มีลักษณะที่มุ่งเน้นไปที่การเปลี่ยนความละเอียดหน้าจอมากกว่า DPI ฉันดูลิงก์ที่คุณให้ แต่ฉันเห็นเพียงตัวเลือกในการตั้งค่าความกว้างและความสูงและไม่พูดถึง DPI ฉันเข้าใจคำตอบของคุณผิดหรือเปล่า?
FThompson

การเปลี่ยนความละเอียดจะเปลี่ยน DPI และในทางกลับกัน คุณสามารถค้นหาความละเอียดหน้าจอภายใต้การตั้งค่า DPI ที่แตกต่างกันจากนั้นเปลี่ยนเป็นความละเอียดเหล่านี้โดยใช้สคริปต์ด้านบน
harrymc

1
ในขณะที่การเปลี่ยนความละเอียดจะเปลี่ยน DPI มันไม่เหมือนกับสเกล DPI ที่นำเสนอใน Win8 (อาจแตกต่างกับระบบปฏิบัติการอื่นหรือไม่) ตัวอย่างนี้คือโดยไม่คำนึงถึง DPI ที่ถูกตั้งค่าเป็นเดสก์ท็อป และไอคอนจะมีขนาดและลักษณะที่เหมือนกันเสมอในขณะที่หากความละเอียดเปลี่ยนไปเดสก์ท็อปและไอคอนจะเปลี่ยนตามขนาด
FThompson

นี่เป็นเพราะเทคโนโลยีการรับรู้ DPI ใหม่ที่นำมาใช้ใน Windows 8.1 ฉันไม่สามารถค้นหาข้อมูลใด ๆ เกี่ยวกับ API ของตนได้ - เฉพาะการตั้งค่ารีจิสทรีเท่านั้นในขณะนี้ซึ่งไม่ใช่สิ่งที่คุณกำลังมองหา
harrymc

Explorer ใช้ DPI เพื่อให้ไอคอนบนเดสก์ท็อปคงขนาด แต่มีโปรแกรมน้อยมาก สำหรับผลิตภัณฑ์ส่วนใหญ่การเปลี่ยนความละเอียดนั้นดีเท่ากับการเปลี่ยน DPI
harrymc
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.