Here is what I reported by email to UltraEdit support during beta testing regarding to compatibility with Windows 7/8.
Subject: No compatibility anymore with Windows 7 because of GetScaleFactorForMonitor in SHCore.dll
I wanted to test 64-bit UE/UES 2024.1.0.16 also on 64-bit Windows 7. The installation was successful on the Windows 7 PC for both applications.
But on start is just shown a message box with executable file name and
- System Error in the title and the text:
The program can't start because
api-ms-win-shcore-scaling-l1-1-1.dll is missing from your
computer. Try reinstalling the program to fix the problem.
See attached Windows7_SystemError_UE.webp and Windows7_SystemError_UES.webp.
This DLL is not available for Windows 7.
I viewed uedit64b.exe with the Total Command plugin FileInfo on Windows 11 which can display a DLL dependency tree. The DLL is missing also on my Windows 11 23H2 PC, see attached image Windows11_MissingDLL.webp. I could not believe it and searched on all local drives of Windows 11 for that DLL with including hidden files and folders. The DLL file does definitely not exist on my Windows 11 PC.
The Total Commander FileInfo plugin displays on tab "Image File Header" which functions are used from which libraries which shows for this DLL:
Code: Select all
IMPORTS TABLE:
api-ms-win-shcore-scaling-l1-1-1.dll
Import Lookup Table RVA: 026BAEE0h (Unbound IAT)
TimeDateStamp: 00000000h
ForwarderChain: 00000000h
DLL Name RVA: 026BB6ACh
Import Address Table RVA: 01D3A350h
First thunk RVA: 01D3A350h
Ordn Name
----- -----
4 GetScaleFactorForMonitor
There is only used the function
GetScaleFactorForMonitor which is used most likely just for the information
100% scaling (on my Windows 11 PC) in the body of a support request email created with the new command
Start support request.
Please remove that function and with it also the dependency on this DLL for getting UltraEdit and UEStudio again compatible with Windows 7/8.
It would be also possible to load the library only on execution of the command
Start support request with function
LoadLibraryExW and if that fails assume 100% as scaling factor. I have seen in world wide web that some other applications use that also as workaround for compatibility with older versions of Windows like Windows 7 and Windows 8 which do not have the library file api-ms-win-shcore-scaling-l1-1-1.dll.
Well, even my Windows 11 23H2 PC does not have it installed by default.
The Microsoft documentation for the function
GetScaleFactorForMonitor describes that Windows 8.1 is the minimum supported Windows client.
The function is in
%SystemRoot%\System32\SHCore.dll on Windows 11 which is the reason why starting UltraEdit 2024.1.0.16 works on Win 11 at all.
I find
Get actual monitor DPI scaling factor very interesting. A VBScript writer wanted to get the scale factor for the monitor whether DPI awareness is on or off and wanted to avoid the usage of
GetScaleFactorForMonitor for compatibility with Windows 7/8 which definitely do not have
SHCore.dll as I could verify with my PC with Windows 7. The solution required just a few lines of VBScript code which call Windows functions existing also in older Windows versions. The few lines can be easily written also in C++ in my opinion if you really need the DPI scaling factor in the support request email.
I searched in the meantime for
SHCore.dll for Windows 7 and it looks like there can be downloaded this DLL for Windows 7. But I have not yet found a download location which I trust.
I still hope that enough UE/UES users request a compatibility of UE/UES with Windows 7/8 by removing this function call just used on running the command
Start support request for creation of an email to UltraEdit support with the scaling factor as information. It is a pity that the compatibility of UE/UES with Windows 7/8 is completely lost just because of that function call no UltraEdit user needs. I would understand a loss of compatibility with Windows 7/8 because of a fundamental change which is a big benefit for UE/UES users using Windows 10/11 like an integrated AI support, but I have a problem with a Windows 7/8 compatibility loss because of just that really not important function call not used by UE/UES at all when a user works with text and source code files.