Jump to content

DPI Awareness , any suggestion ?


Jowy
 Share

Recommended Posts

Hello dears,

I'm trying to write a script in AutoIT but, I have issue in DPI. I'm basically a Lead Software Developer and I use AutoIT from time to time. I have an ERP Launcher that should work on all machines starting by Windows 7, Windows 8.x , Windows 10, Windows Server 2003/2008/2012.

When I was searching in AutoIT forum, I could see previously this " Writing DPI Awareness App - workaround" in the signature of Mr. @mLipok,, but clicking on the link, => page not found.

Do you have any new link or something that you can share with me ? I'm using macbook pro with retina display and VMware machines: Windows 10 and Server 2012 as development machines, but both of them they have 200% scaling and they have AutoIT installed. In this case, when I use Koda (blurry font for sure), I have the controls as I want, and application is working fine, but also blurry font, until it is used on 96 DPI machine.

Now, in windows 10, with DPI System Enhanced feature in the compatibility tab, the application running on 200% scaling is excellent visual like it's running on 96 DPI without touching my code and without doing anything, but no all clients they have windows 10. It seems Microsoft worked a lot on the new feature. But for other machines like windows 7/8/2012, the font is blurry if the clients have scaling above 100% (more than 96 DPI). I know how to enable hidpi stuff in the wrapper and I know how to write the code to use a scaling factor that can be multiplied by every coordinate, but this way is cumbersome and I have to change all coordinates of all X, Y, Width, Height after getting the code from Koda. Is there a fast way ? 

So, what do you recommend me guys ?

Thanks,

Jowy

Link to comment
Share on other sites

7 minutes ago, Subz said:

Does the following registry key equal 192 (200% DPI)?

RegRead ("HKEY_CURRENT_CONFIG\Software\Fonts", "LogPixels")

On windows 10 (my development machine) it's 96 and the scaling is 200% kindly find attached screenshot:

200-Scale-96.png

Link to comment
Share on other sites

Actually might be barking up the wrong tree here, the key refers to the font scaling, i.e. under Advanced display settings » Advanced sizing of text and other items » Set a custom scaling level, which allows you to change the font scaling to match screen dpi, but I'm guessing you're not after this.

 

Link to comment
Share on other sites

38 minutes ago, Subz said:

Actually might be barking up the wrong tree here, the key refers to the font scaling, i.e. under Advanced display settings » Advanced sizing of text and other items » Set a custom scaling level, which allows you to change the font scaling to match screen dpi, but I'm guessing you're not after this.

 

As far as I know , the AppliedDPI is the one showing the scaling... 

Screen Shot 2018-02-18 at 4.10.32 PM.png

Link to comment
Share on other sites

16 hours ago, Jowy said:

As far as I know , the AppliedDPI is the one showing the scaling... 

Screen Shot 2018-02-18 at 4.10.32 PM.png

Now, applying the example with the following and building the Example, check please the following screenshot: the 2 windows is small, one I replied yes for DPI awareness and the other I answered no. I run the exe file from explorer. But if I run through the editor with F5 (with GO option), and since the editor is not DPI aware, for sure you will have same results whether you say yes or no for DPI.Screen Shot 2018-02-18 at 4.15.07 PM.png

 

Edited by Jowy
Link to comment
Share on other sites

15 hours ago, RTFC said:

Hello @RTFC, I have tried the code inside, but it's giving me null for width and height... Anyway, it seems I'll go back for the workaround of scale factor multiplied by each x,y,w,h... , in the workaround, I can at least stretch even the window width on hi-dpi screens.

Screen Shot 2018-02-19 at 8.02.22 AM.png

Edited by Jowy
Link to comment
Share on other sites

STOP posting screenshots of your code, post the code. By posting screenshots, you're making it so that everyone testing this has to retype your code instead of copy-paste. You're going to get a lot less people willing to help you.

If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.
Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag Gude
How to ask questions the smart way!

I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from.

Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays.  -  ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script.  -  Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label.  -  _FileGetProperty - Retrieve the properties of a file  -  SciTE Toolbar - A toolbar demo for use with the SciTE editor  -  GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI.  -   Latin Square password generator

Link to comment
Share on other sites

  • Moderators

Jowy,

As BrewManNH has asked above, please use Code tags to post your code - see here how to do it.

M23

 

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

On 2/19/2018 at 5:10 PM, Melba23 said:

Jowy,

As BrewManNH has asked above, please use Code tags to post your code - see here how to do it.

M23

 

Thanks Melba, it wasn't interesting code actually, it was the examples and codes from other links proposed from guys in the forum and from the Examples code that comes with AutoIT. Next time, I'll put the code.

Link to comment
Share on other sites

On 2/19/2018 at 5:06 PM, BrewManNH said:

STOP posting screenshots of your code, post the code. By posting screenshots, you're making it so that everyone testing this has to retype your code instead of copy-paste. You're going to get a lot less people willing to help you.

Sure Next time will put the code,  it wasn't interesting code actually, it was the examples and codes from other links proposed from guys in the forum and from the Examples code that comes with AutoIT. Next time, I'll put the code. I was only showing the DPI resolution difference.

Link to comment
Share on other sites

  • 2 months later...

LOL on posting code screenshots :lol:

So sad, to this day i cant find a working simple solution to DPI problem.

Just because i know the scaling factor, does not make built in Pixelsearhch function to work.

I think its a bug. If pixelsearch reports incorrect coordinates, its a bug

Link to comment
Share on other sites

@tonycst:  Fully supporting DPI settings is one of the toughest, most convoluted problems I've come upon with Au3 GUIs.  Blurry graphics and enlarged text are just the basic aspects to solve—and are the ones some of the forum posts have "solved".  But then you move to cursor coordinates.  And when you think you have things in hand, try your GUI on a tablet PC that swaps everything to a vertical orientation when you rotate the tablet.  The real topper is a dual monitor system where the monitors are running at different resolutions.

Last week, I happened upon the following observations and conclusions:

Quote

"DPI unaware applications render as if the screen that they are on has a DPI value of 96. Whenever these applications are run on a screen with a display scale greater than 100% (> 96 DPI), Windows will stretch the application blurry."

http://www.kynosarges.org/WindowsDpi.html
HOWEVER, Windows 10 “Creators Update” largely eliminated the various application issues discussed in this (above) article.  Read this, instead:

http://news.kynosarges.org/2017/04/16/dpi-settings-in-windows-10-creators-update/
"Windows 10 started its journey to simplified display settings with an awkward combination of dialogs in the modern Settings app and the legacy Control Panel, as described in my previous post on the subject. With the recently released “Creators Update??? (version 1703) the journey appears to have reached its destination. All display settings, including all DPI settings, are now exclusively handled by the Settings app and have been further streamlined as well."

 

Now, I'll quickly admit that I have yet to make corresponding adjustments to my GUI scripts.  But, I'll proceed with these new roadmaps in hand.  It's encouraging that there's been some progress from the operating system side.  As a first step, I'm back experimenting the the DPI Aware setting for GUIs on Win10.  But then I have Win7 and Win8 environments to consider.

Hope this helps.

 

Link to comment
Share on other sites

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

Spoiler

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind. 

My contribution (my own projects): * Debenu Quick PDF Library - UDF * Debenu PDF Viewer SDK - UDF * Acrobat Reader - ActiveX Viewer * UDF for PDFCreator v1.x.x * XZip - UDF * AppCompatFlags UDF * CrowdinAPI UDF * _WinMergeCompare2Files() * _JavaExceptionAdd() * _IsBeta() * Writing DPI Awareness App - workaround * _AutoIt_RequiredVersion() * Chilkatsoft.au3 UDF * TeamViewer.au3 UDF * JavaManagement UDF * VIES over SOAP * WinSCP UDF * GHAPI UDF - modest begining - comunication with GitHub REST APIErrorLog.au3 UDF - A logging Library * Include Dependency Tree (Tool for analyzing script relations) * Show_Macro_Values.au3 *

 

My contribution to others projects or UDF based on  others projects: * _sql.au3 UDF  * POP3.au3 UDF *  RTF Printer - UDF * XML.au3 UDF * ADO.au3 UDF SMTP Mailer UDF * Dual Monitor resolution detection * * 2GUI on Dual Monitor System * _SciLexer.au3 UDF * SciTE - Lexer for console pane

Useful links: * Forum Rules * Forum etiquette *  Forum Information and FAQs * How to post code on the forum * AutoIt Online Documentation * AutoIt Online Beta Documentation * SciTE4AutoIt3 getting started * Convert text blocks to AutoIt code * Games made in Autoit * Programming related sites * Polish AutoIt Tutorial * DllCall Code Generator * 

Wiki: Expand your knowledge - AutoIt Wiki * Collection of User Defined Functions * How to use HelpFile * Good coding practices in AutoIt * 

OpenOffice/LibreOffice/XLS Related: WriterDemo.au3 * XLS/MDB from scratch with ADOX

IE Related:  * How to use IE.au3  UDF with  AutoIt v3.3.14.x * Why isn't Autoit able to click a Javascript Dialog? * Clicking javascript button with no ID * IE document >> save as MHT file * IETab Switcher (by LarsJ ) * HTML Entities * _IEquerySelectorAll() (by uncommon) * IE in TaskSchedulerIE Embedded Control Versioning (use IE9+ and HTML5 in a GUI) * PDF Related:How to get reference to PDF object embeded in IE * IE on Windows 11

I encourage you to read: * Global Vars * Best Coding Practices * Please explain code used in Help file for several File functions * OOP-like approach in AutoIt * UDF-Spec Questions *  EXAMPLE: How To Catch ConsoleWrite() output to a file or to CMD *

I also encourage you to check awesome @trancexx code:  * Create COM objects from modules without any demand on user to register anything. * Another COM object registering stuffOnHungApp handlerAvoid "AutoIt Error" message box in unknown errors  * HTML editor

winhttp.au3 related : * https://www.autoitscript.com/forum/topic/206771-winhttpau3-download-problem-youre-speaking-plain-http-to-an-ssl-enabled-server-port/

"Homo sum; humani nil a me alienum puto" - Publius Terentius Afer
"Program are meant to be read by humans and only incidentally for computers and execute" - Donald Knuth, "The Art of Computer Programming"
:naughty:  :ranting:, be  :) and       \\//_.

Anticipating Errors :  "Any program that accepts data from a user must include code to validate that data before sending it to the data store. You cannot rely on the data store, ...., or even your programming language to notify you of problems. You must check every byte entered by your users, making sure that data is the correct type for its field and that required fields are not empty."

Signature last update: 2023-04-24

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...