Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Administrator Manifest und PNG Images .....? (https://www.delphipraxis.net/206652-administrator-manifest-und-png-images.html)

creehawk 15. Jan 2021 09:42

Administrator Manifest und PNG Images .....?
 
Moin Moin.

Ich verwende folgende Datei als adm.res die entsprechend eingebunden ist in meinem Programm.

Delphi-Quellcode:
<?xml version="1.0" encoding="utf-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministrator" />
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
Insofern nichts Besonderes, ich verwende diese .res auch in mehreren anderen Programmen. Andere Manifestdateien benutze ich nicht.

Nun ist es aber so das dieses Manifest in meinem aktuellen Programm die PNG-Grafiken der Listviews zerlegt, die über eine Imagecollection dort eingebunden werden. Zerlegt heißt: die Transparenz ist weg. Dies geschieht in der Debug Umgebung, aber auch ausserhalb wenn die IDE nicht läuft. Im übrigen funktioniert alles wie vorgesehen.
Aber : Sobald ich die .res auskommentiere ist alles wieder in Ordnung.
Verwende ich andere Möglichkeiten, zum Beispiel die Prüfung ob der aktuelle Anwender Admin Rechte hat stürzt das Programm sofort ab.

Nach allerlei Forschungsarbeit ist das einzige Delphi Element das ich in diesem Programm verwende - und in den anderen Programmen die dieses Manifest benutzen nicht - die relativ neuen TImageCollection und TVirtualImageList.

Tja. Vorschläge?

creehawk

TiGü 15. Jan 2021 09:59

AW: Administrator Manifest und PNG Images .....?
 
Das sieht ja ein bisschen wenig aus.
Wenn man bspw. ein neues VCL-Projekt in Delphi Tokyo erzeugt und über die Projektoptionen -> Application das Manifest File auf "Auto Generate" stellt und "Enable Runtime Themes" und "Enable High-DPI" aktiviert und zusätzlich bei Execution Level auf "Require Administrator" stellt, dann wird folgendes Manifest als Resource in die EXE eingebaut:

Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>True/PM</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
  <dependency>
    <dependentAssembly>
      <assemblyIdentity
        type="win32"
        name="Microsoft.Windows.Common-Controls"
        version="6.0.0.0"
        publicKeyToken="6595b64144ccf1df"
        language="*"
        processorArchitecture="*"/>
    </dependentAssembly>
  </dependency>
  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="requireAdministrator"
          uiAccess="false"
        />
        </requestedPrivileges>
    </security>
  </trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
   <application>
      <!--The ID below indicates app support for Windows Vista -->
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <!--The ID below indicates app support for Windows 7 -->
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      <!--The ID below indicates app support for Windows 8 -->
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
      <!--The ID below indicates app support for Windows 8.1 -->
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
      <!--The ID below indicates app support for Windows 10 -->
      <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}"/>         
   </application>
</compatibility>
</assembly>
Ich vermute mal, dein Problem sind die fehlenden Runtime Themes, also alles was innerhalb des XML-Nodes <dependency> liegt.
Vermutlich können die alten Win-Controls keine Transparenz?!

creehawk 15. Jan 2021 10:40

AW: Administrator Manifest und PNG Images .....?
 
Okay.

Da ich bisher keinerlei Probleme mit dem zugegeben alten Manifest hatte habe ich es halt benutzt. Das kann man ja ändern wie ich sehe. Ich probier das mal aus. Und das mit den WIN32 Controls kann schon sein. Denn die neben den intransparenten PNG's waren auch die TLabel Elemente nicht mehr Transparent.....

Wird getestet.

Vielen Dank erstmal.

creehawk

creehawk 16. Jan 2021 08:16

AW: Administrator Manifest und PNG Images .....?
 
Alles klar.

So funktioniert es jetzt. Und ich gebe offiziell zu das ich diese Möglichkeit der Manifest Einbindung NICHT kannte. Habe ich immer schlicht übersehen.

In tiefer Demut.

creehawk


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz