#TEMPLATE(DPIAwareFixTpl, 'Fix DPI Aware in the manifest'), FAMILY('ABC'), FAMILY('CW20')
#! --------------------------------------------------------------------------
#EXTENSION(gxDPIAwareFix, 'Activate DPI Aware fix'), APPLICATION, DESCRIPTION('Activate DPI Aware fix')
#DISPLAY('')
#SHEET
#TAB('Global settings')
#ENABLE(%ProgramExtension = 'EXE'),CLEAR
#PROMPT('Generate new or modify existing manifest', CHECK),%gGenerateManifest,DEFAULT(1),AT(10)
#ENABLE(%gGenerateManifest)
#PROMPT('Default DPI awareness mode:', DROP('System aware[System]|Per Monitor[PerMonitorV2]')),%gDPIAwarenessMode,DEFAULT('PerMonitorV2')
#PROMPT('Link manifest as a resource', CHECK),%gLinkManifest,DEFAULT(1),AT(10)
#ENDENABLE
#ENDENABLE
#DISPLAY
#PROMPT('Completely disable this template',CHECK),%gDisable,DEFAULT(0),AT(10)
#ENDTAB
#TAB('About')
#BOXED('')
#DISPLAY('DPI Aware fix')
#DISPLAY('Mike Duglas')
#DISPLAY('Copyright © 2021 All Rights Reserved')
#ENDBOXED
#ENDTAB
#ENDSHEET
#! --------------------------------------------------------------------------
#AT(%AfterGeneratedApplication),WHERE(NOT %gDisable)
#IF(%gGenerateManifest)
#CALL(%DpiAwareEnableManifest, %gLinkManifest, %gDPIAwarenessMode)
#ENDIF
#ENDAT
#! --------------------------------------------------------------------------
#GROUP(%DpiAwareCreateManifest, %pManifestFile, %pDPIMode),AUTO
#CREATE(%pManifestFile)
%Application
#CALL(%DpiAwareInsert, %pDPIMode)
#CLOSE(%pManifestFile)
#! --------------------------------------------------------------------------
#GROUP(%DpiAwareFixManifest, %pManifestFile, %pDPIMode),AUTO
#DECLARE(%FileLine)
#DECLARE(%asmv3Found, LONG)
#DECLARE(%TmpFile)
#SET(%TmpFile, %ManifestFile &'.$$$')
#OPEN(%pManifestFile),READ
#CREATE(%TmpFile)
#LOOP
#READ(%FileLine)
#IF(%FileLine = %EOF)
#BREAK
#ENDIF
#IF(INSTRING(' 0)
#IF(INSTRING('xmlns:asmv3=',%FileLine,1,1) = 0)
#! fix missing xmlns:asmv3 attribute bug
#ELSE
%FileLine
#ENDIF
#ELSIF(INSTRING(' 0)
#! no output from to
#SET(%asmv3Found, %True)
#ELSIF(INSTRING(' 0)
#SET(%asmv3Found, %False)
#ELSIF(INSTRING('<',%FileLine,1,1) > 0)
#! output dpiAwareness prior to closing tag
#CALL(%DpiAwareInsert, %pDPIMode)
%FileLine
#ELSE
#IF(%asmv3Found=%False)
%FileLine
#ENDIF
#ENDIF
#ENDLOOP
#CLOSE(%pManifestFile),READ
#CLOSE(%TmpFile)
#REPLACE(%pManifestFile,%TmpFile)
#REMOVE(%TmpFile)
#! --------------------------------------------------------------------------
#GROUP(%DpiAwareInsert, %pDPIMode),AUTO
#CASE(%pDPIMode)
#OF('PerMonitorV2')
True/PM
PerMonitorV2
#OF('System')
True
#ENDCASE
#! --------------------------------------------------------------------------
#GROUP(%DpiAwareEnableManifest, %pLinkManifest, %pDPIMode),AUTO
#DECLARE(%ManifestFile)
#SET(%ManifestFile, %ProjectTarget & '.manifest')
#IF(NOT FILEEXISTS(%ManifestFile))
#! create manifest if not exists
#CALL(%DpiAwareCreateManifest, %ManifestFile, %pDPIMode)
#ELSE
#! fix manifest
#CALL(%DpiAwareFixManifest, %ManifestFile, %pDPIMode)
#ENDIF
#IF(%pLinkManifest)
#PROJECT(%ManifestFile)
#ENDIF