AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi TaskDialogIndirect in einer 64bit Anwendung
Thema durchsuchen
Ansicht
Themen-Optionen

TaskDialogIndirect in einer 64bit Anwendung

Ein Thema von ringli · begonnen am 31. Dez 2013 · letzter Beitrag vom 5. Jan 2014
Antwort Antwort
ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#1

TaskDialogIndirect in einer 64bit Anwendung

  Alt 31. Dez 2013, 19:48
Hallo,

ich habe mir heute mal die TaskDialogIndirect-Demo von Luckie (http://www.michael-puff.de/Programmi...skDialog.shtml) angesehen und diese als Win32- und Win64-Version kompiliert. Die Win32-Version funktioniert offenbar problemlos.

Auch die Win64-Version scheint auf den ersten Blick zu funktionieren. Allerdings tritt hier das Phänomen auf, das nur der Aufruf der einfachen TaskDialog-Funktion funktioniert. Klickt man danach jedoch auf den Button "Ja" um weiter zur Demo der TaskDialogIndirect-Funktion zu gelangen passiert nichts mehr. Keine Fehlermeldung, keine Exception, nichts. Es scheint so als ob der Aufruf der Funktion aus der "comctl32.dll" fehlschlägt. Mehr konnte ich selber leider noch nicht rausfinden.

Scheinbar ist das Problem im Internet nicht unbekannt, jedoch führt der Vorschlag das Manifest anzupassen, nicht zum Erfolg. Ich habe es mit verschiedenen Manifesten und Einstellungen probiert, unter anderem mit diesem hier:
Code:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
  version="1.9.0.0"
  processorArchitecture="*"
  name="Win32-API-Tutorials.Win32-API-Tutorials.Sample Code"
  type="win32"/>
<description>Sample Code</description>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
    <security>
      <requestedPrivileges>
        <requestedExecutionLevel
          level="asInvoker"
          uiAccess="false"/>
      </requestedPrivileges>
    </security>
  </trustInfo>
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
    <application>
      <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/>
      <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/>
      <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/>
      <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/>
    </application>
  </compatibility>
<dependency>
    <dependentAssembly>
        <assemblyIdentity type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*" />
    </dependentAssembly>
</dependency>
</assembly>
Ist einem von Euch dieses Problem schon begegnet und konnte es irgendwie lösen? Wie gesagt, die Win32-Version funktioniert problemlos, nur die Win64-Version zickt rum. Daher schliesse ich erstmal einen Fehler in der Demo aus.

Achso, getestet habe ich bei einem Bekannten unter Delphi XE4 Pro da ich selber keine 64bit-Version zur Verfügung habe.
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TaskDialogIndirect in einer 64bit Anwendung

  Alt 2. Jan 2014, 11:05
Hat keiner eine Idee? Selbst mit der TMS-Komponente funktioniert das irgendwie nicht.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.316 Beiträge
 
Delphi 12 Athens
 
#3

AW: TaskDialogIndirect in einer 64bit Anwendung

  Alt 2. Jan 2014, 12:01
Delphi-Quellcode:
  <assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="amd64"
    name="Private.Unknown.MySampleApp"
    type="Win32"/>

Hast du mal probehalber im Manifest auch das Win64 angegeben?
Also amd64 oder ia64, je nachdem, was du hast.

Und ich finde es immer wieder interessant, daß niemand den Namen anpasst oder gar die Version.


Ach ja, ich hab zwar sehr oft gesehn, daß bei processorArchitecture ein * angegeben wird,
aber aus leidlicher Erfahrung muß ich sagen, daß man da besser etwas angeben sollte, da Windows das * gern als ungültig erklärt und damit auch das komplette Manifest, bzw. die Anwendung sperrt.
(beim ersten assemblyIdentity, für die Anwendung ... im dependentAssembly stört das * nicht unbedingt ... aber ich hab bisher eigentlich nur Manifeste für Win32-Programme benutzt)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu ( 2. Jan 2014 um 14:27 Uhr)
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: TaskDialogIndirect in einer 64bit Anwendung

  Alt 2. Jan 2014, 13:23
Ja, hatte ich auch schon ausprobiert. Das Ergebnis ist das selbe. Leider. Aber ich kann es heute Abend gerne noch mal ausprobieren.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.857 Beiträge
 
Delphi 12 Athens
 
#5

AW: TaskDialogIndirect in einer 64bit Anwendung

  Alt 2. Jan 2014, 16:13
Bei dir steht doch XE4, da sollte doch auch die integrierte Version der Taskdialoge problemlos funktionieren. Also wozu alles selbst deklarieren?
http://docwiki.embarcadero.com/CodeE...alogs_(Delphi)
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
ringli

Registriert seit: 7. Okt 2004
510 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: TaskDialogIndirect in einer 64bit Anwendung

  Alt 2. Jan 2014, 19:13
Beantworte ich dir gerne. Weil ich die Taskdialoge auch ganz gerne in kleinen Starteranwendungen als MessageBox-Ersatz verwende. Und sobald ich die Taskdialoge über die VCL mit einbinde werden aus mal grade 400 kB weit über 1 MB. Jetzt kann man natürlich argumentieren das Speicherplatz nichts mehr kostet, aber ich bin da halt etwas altmodisch.

Ausserdem interessiert mich das technisch was da wirklich schief läuft.

@himitsu:
Das "amd64" fördert in dem Fall das gleiche zu Tage wie das "*", d.h. vom TaskDialogIndirect ist nach wie vor nichts zu sehen.

Geändert von ringli ( 2. Jan 2014 um 19:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz