Chia tỷ lệ DPI trong Windows 8.1 thông qua dòng lệnh


14

Tôi muốn tạo một phím tắt để nhanh chóng và dễ dàng thay đổi thang đo DPI trên máy của mình, bằng cách tạo một macro nhỏ để chạy khi phát hiện phím tắt.

Trong Windows 8.1, thang đo DPI hiển thị trên màn hình có thể được đặt qua bảng điều khiển (hình dưới), có hiệu lực ngay lập tức. Ngoài ra, thang đo có thể được đặt thủ công trong sổ đăng ký, nhưng làm như vậy yêu cầu người dùng đăng nhập và khởi động lại hoặc khởi động lại máy để có hiệu lực (và chỉ hoạt động để bắt chước tùy chọn "một mức chia tỷ lệ cho tất cả màn hình của tôi") .

Làm cách nào tôi có thể đặt thang đo DPI thông qua dòng lệnh hoặc theo cách khác là lập trình?

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


Bạn đã thử thực hiện thay đổi sổ đăng ký, giết quá trình thám hiểm, sau đó bắt đầu lại. Bởi vì đó là tất cả các phương pháp GUI sẽ làm trong lý thuyết.
Ramhound

@Ramhound Không có may mắn. Giao diện GUI chắc chắn đang làm gì đó để làm mới máy tính để bàn để áp dụng cài đặt, nhưng tôi không chắc chắn những gì và không thể tìm thấy bất cứ điều gì về nó.
FThndry

Bạn có chắc chắn những thay đổi diễn ra ngay lập tức? Tôi nhận được một hộp thoại có nội dung "Bạn phải đăng xuất khỏi máy tính của mình để áp dụng những thay đổi này"
Vinayak

@Vinayak, Các thay đổi diễn ra ngay lập tức khi được áp dụng bởi hộp thoại trên. Tôi nhớ lại rằng ứng dụng ngay lập tức mới đối với Windows 8.1 so với Windows 8 tiêu chuẩn, vì vậy nếu bạn quan tâm đến việc nghiên cứu sự khác biệt giữa máy của bạn và của tôi, đó có thể là một nơi để bắt đầu.
FThndry

@Vulcan Thật ra, tôi đang sử dụng Windows 8.1. Tuy nhiên, tôi đã cố gắng thực hiện các thay đổi sau khi nhấp vào Let me choose one scaling level...hộp kiểm vì thanh trượt phía trên nó bị mờ đi trên sổ ghi chép của tôi.
Vinayak

Câu trả lời:


9

Khóa đăng ký chính xác để theo dõi tỷ lệ độc lập là HKCU:\Control Panel\Desktopvới giá trị LogPixels. Thông tin thêm về tất cả các cài đặt đăng ký liên quan đến DPI có thể được tìm thấy ở đây: http://technet.microsoft.com/en-us/l Library / dd528846.aspx # system Ngoài ra còn có thông tin cho trường hợp khi bạn bật tỷ lệ khác nhau cho mỗi màn hình .

Tôi đã viết một tập lệnh PowerShell nhỏ thay đổi tỷ lệ DPI cho tất cả các màn hình tùy thuộc vào tỷ lệ hiện tại và thực hiện đăng xuất người dùng để tôi chỉ phải thực thi tập lệnh khi đặt thiết bị của mình sang một màn hình khác.

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

Tôi nghĩ bạn có thể sửa đổi nó theo nhu cầu của bạn với thông tin của bài viết TechNet.


3
Tôi xin lỗi vì đã không trả lời sớm hơn; giải pháp tuyệt vời! Tuy nhiên, thật không may, sử dụng LogPixelsgiá trị chỉ áp dụng khi hộp kiểm "Hãy để tôi chọn một mức chia tỷ lệ cho tất cả các màn hình của tôi", một điều tôi đã quan sát thấy khi tự làm hỏng các giá trị đăng ký nhưng cũng được xác nhận bởi bài viết Technet được liên kết. Ngoài ra, giải pháp của bạn có sự cảnh báo về yêu cầu đăng xuất của người dùng; DPI không được cập nhật mà không cần người dùng đăng xuất và đăng nhập lại. Giữa hai nhược điểm này, giải pháp của bạn không hoàn toàn phù hợp với tôi, nhưng +1 tất cả đều giống nhau cho một câu trả lời tuyệt vời.
FThndry

Nó không hoạt động trên Windows 10 :(
kokbira

3
@kokbira Đối với điều này để làm việc trong Windows 10 bạn cần phải thiết lập các khóa registry HKCU:\Control Panel\Desktop\Win8DpiScalingđể 1. Nếu không, nó sẽ sử dụng hệ số tỷ lệ mặc định và bỏ qua giá trị trong LogPixels.
FlyingFoX

1
Nếu Tỷ lệ DPI khác nhau cho mỗi màn hình, thay vì HKCU:\Control Panel\DesktopnhìnHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Shaya

1
Và cũng ở đâyHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Shaya

2

Có tập lệnh PowerShell để thay đổi độ phân giải màn hình có thể giúp ích. Tôi không biết liệu sự thay đổi có xảy ra ngay lập tức trên Windows 8.1 hay không, nhưng với một chút may mắn, tập lệnh này có thể sử dụng cùng API như được sử dụng bởi applet Control Panel.

Tập Set-ScreenResolution.ps1lệnh hoàn chỉnh có sẵn trong Kho lưu trữ tập lệnh , nhưng quá dài để sao chép ở đây.

Mô tả của tác giả có thể được tìm thấy trong bài viết:
Hey, Scripting Guy! Làm cách nào tôi có thể thay đổi Độ phân giải màn hình máy tính để bàn của mình qua Windows PowerShell? .

Một số thông tin về việc sử dụng nó có thể được tìm thấy trong bài viết:
Thay đổi độ phân giải màn hình với Powershell .


Các tài nguyên này trông có định hướng hơn về việc thay đổi độ phân giải màn hình thay vì DPI. Tôi đã xem các liên kết bạn cung cấp, nhưng tôi chỉ thấy các tùy chọn để đặt chiều rộng và chiều cao và không đề cập đến DPI. Tôi có hiểu nhầm câu trả lời của bạn không?
FThndry

Thay đổi độ phân giải sẽ thay đổi DPI và ngược lại. Bạn có thể tìm ra độ phân giải màn hình trong các cài đặt DPI khác nhau, sau đó thay đổi thành các độ phân giải này bằng cách sử dụng tập lệnh trên.
harrymc

1
Trong khi thay đổi độ phân giải sẽ thay đổi DPI, nó không hoàn toàn giống với tỷ lệ DPI được cung cấp trong Win8 (có thể khác với các hệ điều hành khác?) Một ví dụ về điều này là bất kể tỷ lệ DPI được đặt là gì, máy tính để bàn và các biểu tượng của nó luôn giống nhau về kích thước và hình dáng, trong khi nếu độ phân giải được thay đổi, màn hình nền và biểu tượng của nó cũng thay đổi kích thước tương ứng.
FThndry

Điều này là do công nghệ nhận biết DPI mới được giới thiệu trong Windows 8.1. Tôi chưa thể tìm thấy bất kỳ thông tin nào về API của nó - chỉ có cài đặt đăng ký hiện có sẵn, đây không phải là thứ bạn đang tìm kiếm.
harrymc

Explorer nhận biết DPI nên các biểu tượng trên màn hình giữ kích thước của chúng, nhưng rất ít chương trình khác. Đối với hầu hết các sản phẩm, thay đổi độ phân giải cũng tốt như thay đổi DPI.
harrymc
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.