Jowy Posted February 18, 2018 Posted February 18, 2018 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
Jowy Posted February 18, 2018 Author Posted February 18, 2018 2 hours ago, Subz said: Try: I have tried it, but same still blurry on 2012 and windows 10, any other suggestion ?
Subz Posted February 18, 2018 Posted February 18, 2018 Does the following registry key equal 192 (200% DPI)? RegRead ("HKEY_CURRENT_CONFIG\Software\Fonts", "LogPixels")
Jowy Posted February 18, 2018 Author Posted February 18, 2018 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:
Subz Posted February 18, 2018 Posted February 18, 2018 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.
Jowy Posted February 18, 2018 Author Posted February 18, 2018 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...
Jowy Posted February 18, 2018 Author Posted February 18, 2018 (edited) 16 hours ago, Jowy said: As far as I know , the AppliedDPI is the one showing the scaling... 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. Edited February 19, 2018 by Jowy
RTFC Posted February 18, 2018 Posted February 18, 2018 Maybe this thread helps: https://www.autoitscript.com/forum/topic/182423-wrong-screen-resolution-displayed-by-autoit-macros/ My Contributions and Wrappers Spoiler BitMaskSudokuSolver BuildPartitionTable CodeCrypter CodeScanner DigitalDisplay Eigen4AutoIt FAT Suite HighMem MetaCodeFileLibrary OSgrid Pool RdRand SecondDesktop SimulatedAnnealing Xbase I/O
Jowy Posted February 19, 2018 Author Posted February 19, 2018 (edited) 15 hours ago, RTFC said: Maybe this thread helps: https://www.autoitscript.com/forum/topic/182423-wrong-screen-resolution-displayed-by-autoit-macros/ 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. Edited February 19, 2018 by Jowy
BrewManNH Posted February 19, 2018 Posted February 19, 2018 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 GudeHow 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
Moderators Melba23 Posted February 19, 2018 Moderators Posted February 19, 2018 Jowy, As BrewManNH has asked above, please use Code tags to post your code - see here how to do it. M23 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 columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area
Jowy Posted February 20, 2018 Author Posted February 20, 2018 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.
Jowy Posted February 20, 2018 Author Posted February 20, 2018 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.
tonycst Posted May 12, 2018 Posted May 12, 2018 LOL on posting code screenshots 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
qwert Posted May 12, 2018 Posted May 12, 2018 @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.
mLipok Posted May 12, 2018 Posted May 12, 2018 btw. added to the WIKI https://www.autoitscript.com/wiki/FAQ#DPI_Awareness 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 Code * for 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 API * ErrorLog.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 TaskScheduler * IE 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 stuff * OnHungApp handler * Avoid "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" , 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
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now