Bagaimana saya bisa memaksa aplikasi menjadi skala tinggi-dpi?
Berpura-puralah ada aplikasi, yang pengembangnya mewujudkannya sebagai dpi-sadar tinggi, padahal sebenarnya tidak. Bagaimana saya bisa memaksakan dpi-scaling?
Berpura-pura ada aplikasi bahwa Microsoft telah menerapkan "
HighDpiAware
" compatiblity shim, ketika aplikasi sebenarnya tidak. Bagaimana saya bisa memaksakan dpi-scaling?
Bagaimana saya bisa memaksa Windows untuk menerapkan dpi-scaling ke suatu aplikasi?
Sunting: Apa itu penskalaan dpi tinggi?
Tidak semua pengguna menjalankan Windows pada 96dpi. Tidak setiap tombol seharusnya berukuran 75x23 piksel, tidak semua bilah alat memiliki tinggi 25 piksel, dan tidak setiap mesin pencari pohon berukuran 16x16. Jika pengguna telah memilih pengaturan dpi berbeda untuk Windows, Anda perlu mengatur skala semuanya dengan tepat.
Masalahnya adalah bahwa hampir tidak ada pengembang melakukan pekerjaan mereka dengan menangani pengaturan dpi tinggi dengan baik. Paling-paling semuanya akan tetap "ukuran yang sama", yang berarti bahwa setiap tampak mungil mungil . Bentuk terburuk adalah tata letak yang salah, dengan teks terpotong, dan kontrol tidak terlihat.
Dimulai dengan Windows Vista, dan meningkatkan kekuatan Komposisi Desktop, Microsoft menyerah pada pengembang yang melakukan pekerjaan mereka, dan sekarang berbohong pada aplikasi. Mereka memberi tahu aplikasi bahwa pengguna berjalan pada 96dpi. Windows kemudian menggunakan kartu video, dan Komposisi Desktop, untuk meningkatkan formulir.
Pro: konten formulir akan menjadi ukuran yang mudah dibaca.
Con: semuanya akan sedikit kabur.
Fitur "penskalaan dpi tinggi" ini hanya berfungsi atas kebijakan pengguna, dan membutuhkan:
- Windows Vista atau yang lebih baru
- Komposisi Desktop akan diaktifkan
- pengguna untuk mematikan "Gunakan penskalaan gaya Windows XP"
- pengguna tidak menonaktifkan penskalaan untuk aplikasi Anda
Sebagai pengembang, Anda dapat memilih keluar dari penskalaan dpi tinggi; jika Anda berusaha untuk menulis aplikasi Anda dengan benar, dan Anda tahu bahwa Anda akan menangani high-dpi dengan benar. Anda menyisih dari penskalaan ini dengan menambahkan entri manifes ke eksekusi Anda, menyatakan bahwa Anda " sadar dpi tinggi ".
Topik tentang bagaimana membuat aplikasi Anda menghargai preferensi pengguna (termasuk tampilan font, ukuran font, dan pengaturan dpi) adalah pertanyaan untuk stack overflow
. Seperti sintaks untuk entri manifes menyatakan " kesadaran dpi tinggi " Anda.
Pertanyaan ini , pada pengguna-super , adalah bagaimana cara mengabaikan pengembang yang terus maju dan menambahkan entri manifes menyadari-dpi tinggi, padahal sebenarnya aplikasi tersebut tidak sadar-dpi tinggi. Mereka mengatakan kepada Windows untuk menonaktifkan penskalaan, tetapi mereka tidak benar-benar menguji aplikasi. Ada perangkat lunak di luar sana dengan entri manifes "kesadaran tinggi-dpi", dan sekarang aplikasi tidak dapat digunakan di bawah "font besar" (mis. 120dpi).
sumber
Jawaban:
Hmm. Saran saya adalah mengedit manifes dan menghapus deklarasi yang salah. Dan jangan lupa bug pengembang tentang hal itu namun Anda bisa!
Sunting: Perlu diketahui bahwa cukup menempatkan manifes di sebelah yang dapat dieksekusi, misalnya untuk
foo.exe
, Anda akan meletakkan manifesfoo.exe.manifest
. Lihat artikel MSDN (lihat bagian "Sintaks Nama File").sumber
.manifest
file diutamakan atas manifes di dalam executable. Hari ini manifes apa pun yang dibangun ke dalam executable akan menimpa.manifest
file eksternal apa pun . saya tidak ingat paket layanan XP mana yang mengubahnya - saya pikir itu SP2.Saya baru saja merilis DLL yang menghubungkan dan mengalihkan panggilan ke SetProcessDPIAware. Untuk aplikasi yang menonaktifkan penskalaan DPI melalui kode, ini adalah perbaikan yang cepat dan mudah (dibandingkan dengan penambalan biner).
DPIMangler: Posting blog , kode sumber .
sumber
Anda masih dapat mengedit manifes, Anda hanya perlu mengeditnya di file .EXE itu sendiri. Cari editor sumber daya yang memiliki dukungan nyata. Contoh dengan dukungan yang belum sempurna adalah XN Resource Editor.) Cukup temukan dan hapus baris yang menyebutkan HIGHDPIAWARE dan simpan yang dapat dieksekusi.
Pastikan untuk membuat salinan dari executable sebelum Anda mengeditnya!
sumber
Saya ingin tahu apakah ResizeEnable adalah yang Anda cari?
http://www.digitallis.co.uk/pc/ResizeEnable/
sumber