จะบังคับให้ปรับสเกลสูงได้อย่างไร


27

ฉันจะบังคับให้แอปพลิเคชันมีขนาดสูงได้อย่างไร

  • แกล้งทำเป็นว่ามีแอพพลิเคชั่นผู้พัฒนาที่แสดงให้เห็นถึงความละเอียดสูงเมื่อมันไม่ได้เป็นจริง ฉันจะบังคับ dpi-scaling ได้อย่างไร

  • สมมติว่ามีHighDpiAwareแอปพลิเคชันที่ Microsoft ได้ใช้shim compatiblity เมื่อแอปพลิเคชันไม่ใช่ "" ฉันจะบังคับ dpi-scaling ได้อย่างไร

ฉันจะบังคับให้ Windows ใช้การปรับ dpi กับแอปพลิเคชันได้อย่างไร


แก้ไข: การปรับสเกลสูง dpi คืออะไร

ไม่ใช่ผู้ใช้ทุกคนที่ใช้ Windows ที่ 96dpi ไม่ใช่ทุกปุ่มที่ควรจะมีขนาด 75x23 พิกเซลไม่ใช่แถบเครื่องมือทุกอันจะสูง 25 พิกเซลและไม่ได้มีรูปแบบแผนภูมิ TreeView ทุกขนาดเท่ากับ 16x16 หากผู้ใช้เลือกการตั้งค่า dpi ที่แตกต่างกันสำหรับ Windows คุณจะต้องปรับขนาดทุกอย่างให้เหมาะสม

ปัญหาคือเกือบจะไม่มีนักพัฒนาทำงานด้วยการจัดการการตั้งค่าความละเอียดสูงอย่างดี ที่ดีที่สุดทุกอย่างจะอยู่ "ขนาดเดียวกัน" ซึ่งหมายความว่าทุกปรากฏยังเล็กเล็ก ในรูปแบบที่เลวร้ายที่สุดจะถูกจัดวางอย่างไม่ถูกต้องโดยมีการตัดข้อความและควบคุมไม่ปรากฏ

เริ่มต้นด้วย Windows Vista และใช้ประโยชน์จากประสิทธิภาพของเดสก์ท็อปคอมโพสิต Microsoft ได้เลิกล้มนักพัฒนาที่ทำงานของตนเอง พวกเขาบอกแอพว่าผู้ใช้ทำงานที่ 96dpi Windows จะใช้การ์ดแสดงผลและองค์ประกอบเดสก์ท็อปเพื่อขยายขนาดแบบฟอร์ม

Pro:เนื้อหาของฟอร์มจะมีขนาดที่สามารถอ่านได้ดี
คอนดิชั่น:ทุกอย่างจะเลือนเล็กน้อย

คุณลักษณะ "การปรับสเกลสูง -dpi" นี้ใช้งานได้ตามดุลยพินิจของผู้ใช้เท่านั้นและต้องการ:

  • Windows Vista หรือใหม่กว่า
  • องค์ประกอบเดสก์ทอปที่จะเปิดใช้งาน
  • ผู้ใช้เพื่อปิด "ใช้การปรับขนาดสไตล์ Windows XP"
  • ผู้ใช้ที่ไม่ปิดใช้งานการปรับขนาดสำหรับแอปพลิเคชันของคุณ

ในฐานะนักพัฒนาคุณสามารถยกเลิกการปรับสเกลสูงได้ หากคุณพยายามเขียนแอปพลิเคชันของคุณอย่างถูกต้องและคุณรู้ว่าคุณจะจัดการกับความละเอียดสูงได้อย่างเหมาะสม คุณยกเลิกการปรับขนาดนี้โดยการเพิ่มรายการรายการลงในไฟล์สั่งการของคุณโดยประกาศว่าคุณเป็น "ผู้ที่มีความคมชัดสูง"

หัวข้อของวิธีการที่จะทำให้ใบสมัครของคุณเคารพการตั้งค่าของผู้ใช้ (รวมทั้งหน้าตัวอักษรขนาดตัวอักษรและการตั้งค่า dpi) stack overflowเป็นคำถามสำหรับ เช่นเดียวกับไวยากรณ์ของรายการประกาศ " การรับรู้ขั้นสูง " ของคุณ

คำถามนี้สำหรับผู้ใช้ขั้นสูงคือวิธีที่จะเพิกเฉยต่อนักพัฒนาซอฟต์แวร์ที่ไปข้างหน้าและเพิ่มรายการการรับรู้ที่มีความละเอียดสูง dpi เมื่อที่จริงแล้วแอปพลิเคชันไม่ได้รับการแจ้งเตือนที่มีความละเอียดสูง พวกเขาบอกให้ Windows ปิดการใช้งานมาตราส่วน แต่พวกเขาไม่ได้ทดสอบแอปพลิเคชัน มีซอฟต์แวร์ออกมาพร้อมกับรายการรายการ "high-dpi ที่รับรู้" และตอนนี้แอปพลิเคชันไม่สามารถใช้งานได้ภายใต้ "แบบอักษรขนาดใหญ่" (เช่น 120dpi)


ฉันสนใจสิ่งนี้เช่นกัน เรามีแอปพลิเคชั่นที่สำคัญที่ไม่ทราบถึง dpi และได้รับการออกแบบมาสำหรับหน้าจอ 800x600 Windows ไม่ปรับขนาดตามค่าเริ่มต้นและไม่ได้สร้างความแตกต่างไม่ว่าเราจะใช้ XP, Vista หรือ 7 เนื่องจากพนักงานของเราใช้เวลาส่วนใหญ่ในแอป 800x600 นี้พวกเขายืนยันว่าจะใช้จอ LCD 20 " ที่ความละเอียด 800x600! นี่เป็นเรื่องใหญ่และการขาดพิกเซลในตัวเองเมื่อพวกเขาจำเป็นต้องใช้ MS Office, IE8 และอื่น ๆ
Miles Erickson

1
จนกระทั่ง Windows Vista ที่ Microsoft เริ่มใช้ประโยชน์จากส่วนประกอบของเดสก์ท็อป (สิ่งที่บางคนเรียกว่าAeroอย่างไม่เหมาะสม) เพื่อใช้กราฟิกการ์ดเพื่อขยายแอปพลิเคชันที่ไม่ได้เลือกที่จะลดขนาด ไม่มีการปรับขนาดใน XP และคุณไม่ต้องการปรับขนาดใน Vista 7 คุณต้องการให้แอปพลิเคชันของคุณเขียนได้อย่างถูกต้อง เดินไปที่เครื่องจักรของนักพัฒนาและเปลี่ยนความละเอียดกลับไปเป็น 1,050 และตั้งค่า dpi เป็น 168 ทุกอย่างจะถูกซูมขนาดใหญ่เหมือนกันในโหมด tard ยกเว้นแอปจะทำงานไม่ถูกต้อง บอกพวกเขาว่าพวกเขาไม่ได้รับอาหารหรือน้ำใด ๆ จนกว่าจะได้รับการแก้ไข
Ian Boyd

เราไม่สามารถเข้าถึงนักพัฒนาซอฟต์แวร์ที่สร้างแอพที่เราใช้ ถ้าเพียงเราทำ ...
Cylindric

Forms = shapes?
jiggunjer

คำตอบ:


5

อืมมม คำแนะนำของฉันคือการแก้ไขรายการและลบการประกาศที่ไม่ถูกต้อง และอย่าลืมที่จะบั๊กนักพัฒนาเกี่ยวกับมันอย่างไรก็ตามคุณสามารถ!

แก้ไข: โปรดทราบว่าควรเป็นไปได้ที่จะวางรายการที่อยู่ถัดจากไฟล์ที่เรียกใช้งานได้เช่นfoo.exeคุณจะต้องวางรายการfoo.exe.manifestไว้ ดูบทความ MSDN (ดูในส่วนชื่อ "ไวยากรณ์ชื่อไฟล์")


ฉันคิดว่านี่เป็นวิธีเดียวที่จะไป ข้อเสีย: มันทำให้ลายเซ็นดิจิตอลของแอปพลิเคชันใช้ไม่ได้
เอียนบอยด์

@Ian: ดูเหมือนว่าคุณไม่จำเป็นต้องแสดงรายการในทรัพยากร
SamB

3
มันเคยเป็นที่.manifestไฟล์มีความสำคัญมากกว่ารายการภายในปฏิบัติการ ทุกวันนี้รายการใด ๆ ที่มีอยู่ภายในไฟล์สั่งการจะแทนที่.manifestไฟล์ภายนอกใด ๆ ฉันจำไม่ได้ว่า service pack ของ XP เปลี่ยนไป - ฉันคิดว่ามันเป็น SP2
เอียนบอยด์

8

ฉันเพิ่งเปิดตัว DLL ที่ขอและเปลี่ยนเส้นทางการโทรไปที่ SetProcessDPIAware สำหรับแอปพลิเคชันที่ปิดใช้งานการปรับ DPI ผ่านโค้ดนี่เป็นการแก้ไขที่ง่ายและรวดเร็ว (เทียบกับการแพตช์ไบนารี)

DPIMangler: บล็อกโพสต์ , รหัสที่มา


6

คุณยังคงสามารถแก้ไขไฟล์ Manifest ได้คุณจะต้องแก้ไขมันในไฟล์. EXE ค้นหาตัวแก้ไขทรัพยากรที่มีการสนับสนุนรายการ ตัวอย่างที่มีการสนับสนุนพื้นฐานคือ XN Resource Editor) เพียงแค่ค้นหาและลบบรรทัดที่กล่าวถึง HIGHDPIAWARE และบันทึกไฟล์ที่เรียกทำงานได้

ตรวจสอบให้แน่ใจว่าได้ทำสำเนาไฟล์ปฏิบัติการก่อนที่คุณจะแก้ไข!


"ข้อเสีย: ทำให้ลายเซ็นดิจิตอลของแอปพลิเคชันใช้ไม่ได้"
Ian Boyd

0

ฉันสงสัยว่า ResizeEnable เป็นสิ่งที่คุณต้องการหรือไม่

http://www.digitallis.co.uk/pc/ResizeEnable/


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