Windows 8.1'de komut satırı üzerinden DPI Ölçeklendirme


14

Klavye kısayolunun algılanması üzerine çalıştırılacak küçük bir makro oluşturarak, makinemdeki DPI ölçeğini hızlı ve kolay bir şekilde değiştirmek için bir klavye kısayolu oluşturmak istiyorum.

Windows 8.1'de, masaüstü ekran DPI ölçeği hemen etkili olacak şekilde kontrol paneli (aşağıdaki resimde) aracılığıyla ayarlanabilir. Alternatif olarak, ölçek kayıt defterinde manuel olarak ayarlanabilir, ancak bunun yapılması için kullanıcının etkili olması için makinede oturum açmasını ve oturumu kapatmasını veya yeniden başlatmasını gerektirir (ve yalnızca "tüm ekranlarım için bir ölçeklendirme düzeyi" seçeneğini taklit etmek için çalışır) .

DPI ölçeğini komut satırı üzerinden veya başka bir şekilde program aracılığıyla nasıl ayarlayabilirim?

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


Kayıt defteri değişikliğini yapmayı, explorer işlemini öldürmeyi ve sonra yeniden başlatmayı denediniz mi? Çünkü tüm GUI yöntemi teoride bunu yapardı.
Ramhound

@Ramhound Şans yok. GUI arayüzü, ayarı uygulamak için masaüstünü yenilemek için kesinlikle bir şeyler yapıyor, ancak bunun hakkında hiçbir şey bulamadığından emin değilim.
FThompson

Değişikliklerin hemen gerçekleştiğinden emin misiniz? "Bu değişiklikleri uygulamak için bilgisayarınızdan çıkış yapmalısınız" şeklinde bir iletişim kutusu alıyorum
Vinayak

@Vinayak, Değişiklikler yukarıdaki iletişim kutusu tarafından uygulandığında hemen gerçekleşir. Anında uygulamanın standart Windows 8 üzerinde Windows 8.1 için yeni olduğunu okuduğumu hatırlıyorum, bu yüzden makineniz ve benimki arasındaki farkı araştırmakla ilgileniyorsanız, bu başlamak için bir yer olabilir.
FThompson

@Vulcan Aslında, Windows 8.1 kullanıyorum. Ancak, Let me choose one scaling level...yukarıdaki kaydırıcı defterimde gri renkte olduğundan onay kutusunu tıkladıktan sonra değişiklik yapmaya çalışıyordum .
Vinayak

Yanıtlar:


9

Monitörden bağımsız ölçeklendirme için doğru kayıt defteri anahtarı HKCU:\Control Panel\Desktopdeğerdedir LogPixels. DPI ile ilgili tüm kayıt defteri ayarları hakkında daha fazla bilgiyi şu adreste bulabilirsiniz: http://technet.microsoft.com/en-us/library/dn528846.aspx#system Her ekran için farklı ölçeklendirmeyi etkinleştirdiğinizde durumla ilgili bilgiler de vardır .

Geçerli ölçeklemeye bağlı olarak tüm ekranlar için DPI ölçeklemesini değiştiren küçük bir PowerShell betiği yazdım ve cihazımı farklı bir monitöre koyduğumda komut dosyasını yürütmek zorunda kaldım.

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

Sanırım TechNet makalesinin bilgileriyle ihtiyaçlarınıza göre değiştirebilirsiniz.


3
Daha erken cevap vermediğim için özür dilerim; harika bir çözüm! Ancak maalesef bu LogPixelsdeğerin kullanılması, yalnızca "Tüm ekranlarım için bir ölçeklendirme düzeyi seçeyim" onay kutusu işaretlendiğinde, kayıt defteri değerleri ile uğraşırken gözlemlediğim, ancak bağlantılı Technet makalesi tarafından da onaylandığında geçerlidir. Ayrıca, çözümünüzde kullanıcı oturumunu kapatma uyarısı vardır; kullanıcı oturumu kapatıp tekrar giriş yapmadan DPI'lar güncellenmez. Bu iki dezavantaj arasında, çözümünüz benim için pek işe yaramaz, ancak harika bir yanıt için + 1'leyin.
FThompson

Windows 10'da çalışmıyor :(
kokbira

3
@kokbira Bunun Windows 10'da çalışması için kayıt defteri anahtarını HKCU:\Control Panel\Desktop\Win8DpiScalingolarak ayarlamanız gerekir 1. Aksi takdirde, varsayılan ölçeklendirme faktörünü kullanır ve içindeki değeri yok sayar LogPixels.
FlyingFoX

1
DPI Ölçeği her monitör için farklıysa, HKCU:\Control Panel\Desktopgörünüm yerineHKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics\AppliedDPI
Shayan

1
Ve ayrıca buradaHKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\GraphicsDrivers\ScaleFactors
Shayan

2

Ekran çözünürlüğünü değiştirmek için yardımcı olabilecek PowerShell betiği vardır. Değişiklik Windows 8.1 üzerinde hemen olup olmadığını bilmiyorum, ama biraz şans ile bu komut dosyası Denetim Masası uygulaması tarafından kullanılan aynı API kullanabilirsiniz.

Set-ScreenResolution.ps1Komut dosyasının tamamı Komut Dosyası Deposunda bulunur , ancak burada yeniden oluşturmak için çok uzun.

Yazarın açıklaması makalede bulunabilir:
Hey, Scripting Guy! Masaüstü Monitör Çözünürlüğümü Windows PowerShell ile Nasıl Değiştirebilirim? .

Kullanmayla ilgili bazı bilgiler şu makalede bulunabilir:
Powershell ile Ekran Çözünürlüğünü Değiştirme .


Bu kaynaklar, DPI'dan ziyade ekran çözünürlüğünü değiştirmeye yönelik görünüyor. Sağladığınız bağlantılara baktım, ancak yalnızca genişlik ve yüksekliği ayarlamak için seçenekler görüyorum ve DPI'dan bahsetmiyorum. Cevabınızı yanlış mı anlıyorum?
FThompson

Çözünürlüğü değiştirmek DPI ve tersini değiştirir. Ekran çözünürlüğünü farklı DPI ayarları altında bulabilir, ardından yukarıdaki komut dosyasını kullanarak bu çözünürlüklere geçebilirsiniz.
harrymc

1
Çözünürlüğü değiştirmek DPI'yi değiştirirken, Win8'de sunulan DPI ölçeklendirmesi ile aynı şey değildir (belki diğer işletim sistemlerinde farklıdır?) Bunun bir örneği, DPI ölçeklendirmesinin ne olduğuna bakılmaksızın, masaüstü ve simgeleri her zaman boyut ve görünüm olarak aynıdır, oysa çözünürlük değiştirilirse, masaüstü ve simgeleri buna göre boyut olarak değişir.
FThompson

Bunun nedeni, Windows 8.1'de tanıtılan yeni DPI uyumlu teknolojidir. API'sı hakkında herhangi bir bilgi bulamadım - şu anda yalnızca kayıt defteri ayarı var, aradığınız şey bu değil.
harrymc

Explorer DPI uyumludur, bu nedenle masaüstü simgeleri boyutlarını korur, ancak çok az başka program vardır. Çoğu ürün için çözünürlüğü değiştirmek DPI'yi değiştirmek kadar iyidir.
harrymc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.