Autor Beitrag
Biarchiv
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: Di 25.08.09 15:06 
Hallo,

blöde Frage. Diese Messagebox wird nicht angezeigt wenn ich ein project ohne form erstelle. Wo ich halt nur in der dpr programmiere ohne richtiges projekt. Das komische im Win2000 gehts aber nicht im WinXP. Es kommt zwar der Messagebox-Beep aber nicht die Messagebox selbst.

Lösungen?

ausblenden Delphi-Quelltext
1:
messagebox(0'TEST''TEST', MB_OK);					

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt

---Moderiert von user profile iconNarses: Beiträge zusammengefasst---

Hallo,

mir ist jetzt folgendes aufgefallen.
Wenn ich in meinem Delphi 2006 Prof ein Manifest mit XP-Style und Vista Rights (requireAdministrator) mitkompiliere ist das so. Sonst nicht.
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 25.08.09 15:56 
Hm, vielleicht benötigt MessageBox ein Formular, keine Ahnung.

Wenn du nur einen einfachen Dialog anzeigen willst, könntest du ShowMessage verwenden.

Sonst kannst du Application.MessageBox verwenden, wobei du dafür natürlich die Unit Forms einbinden musst, und Application.Initialize; ganz am Anfang aufrufen musst. Formulare braucht man für die Methode nicht, das hab ich schon ausprobiert.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 25.08.09 16:09 
Und das ist ein normales Programm, also kein Dienst oder so etwas? Ein Konsolenprogramm vielleicht? Ich werde das in einer VM gleich mal kurz testen.
turboPASCAL
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 193
Erhaltene Danke: 1

Win XP / Vischda
D6 PE / D2005 PE
BeitragVerfasst: Di 25.08.09 19:02 
Jao, so 'n paar mehr Infos zum Programmaufbau und wie die Messagebox aufgerufen wird wären nicht schlecht.
Zb. läuft die App als Fullscreen etc. pp. ...

Eigentlich Funktioniert die Messagebox immer, bzw. kann es vorkommen das sie nicht sichtbar also von anderen
Fenstern verdeckt wird da es bei einem Aufruf wie beschrieben als "Desktopchildwindow" erzeugt wird.

_________________
Nein, ich bin nicht der turboPASCAL aus der DP, ich seh nur so aus... :P
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 25.08.09 19:24 
Auf jeden Fall kann ich das nicht reproduzieren, egal bei was für einem Programm, es funktioniert auch unter XP. :nixweiss:

Bei einem Dienst z.B. würde das natürlich anders aussehen, da würde die Meldung natürlich nicht erscheinen.
Biarchiv Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: Mi 26.08.09 14:13 
Hallo,

nein läuft nicht als Konsole.

Ich hab mal ein sehr kurzes Beispiel-Source mit test.exe hinzugefügt.

Test.dpr und die WinVista.RES. Die test.exe zeigt in WinXP keine messagebox allerdings kommt der Gong. In Win2000 kommt die Box normal. Benutzt mit Delphi2006 Prof und alles Updates sowie Hotfixes.

Wenn man die Resourcen nicht einbindet läuft es.

Vorschläge?
Einloggen, um Attachments anzusehen!
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.08.09 22:01 
Was ist das für eine Ressource?
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 26.08.09 22:48 
Dein Code
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
uses sysutils, ShellAPI, windows;

{$R winvista.RES}

begin
  messagebox(0'test''Test', MB_OK);
end.

Ohne die Ressource funktioniert es. Mit Ressource wird die MessageBox nicht angezeigt.

Füge ich nach der Messagebox ein Readln ein, bekomme ich eine Exception. Da stimmt was nicht mit der Ressource.

Getestet unter XP SP2 und BDS2006.
Biarchiv Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: Do 27.08.09 15:52 
Hallo,

das komische ist wenn ich bei der uses einfach dialogs hinzufüge, dann funktioniert es mit der selben Resource. Wie kann das sein. Was hat die Forms mit der messagebox API zu tun?


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
uses sysutils, ShellAPI, windows, dialogs;

{$R winvista.RES}

begin
      messagebox(0'test''Test', MB_OK);
end.
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.08.09 18:45 
Ich vermute, dass durch die Ressource auf ungültigen Speicher zugegriffen wird. Bindest du jetzt die Unit Dialogs ein sieht dein Speicher anderes aus und es klappt zufällig.

Aber was ist denn das jetzt für eine Ressource? Ist da ein Manifest drine? Ist das Manifest eventuell fehlerhaft?
Biarchiv Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: Do 27.08.09 18:57 
Hallo,

die res file hab ich hochgeladen.

Sie sieht so aus:
ausblenden volle Höhe XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 


<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"


<assemblyIdentity 
    name="SoftwareName" 
    processorArchitecture="*" 
    version="1.0.0.0" 
    type="win32"/> 


<description>Windows Shell</description


<dependency
    <dependentAssembly
        <assemblyIdentity 
            type="win32" 
            name="Microsoft.Windows.Common-Controls" 
            version="6.0.0.0" 
            processorArchitecture="x86" 
            publicKeyToken="6595b64144ccf1df" 
            language="*" 
        /> 
    </dependentAssembly
</dependency




  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"
    <security
      <requestedPrivileges
        <requestedExecutionLevel 
          level="requireAdministrator"/> 
      </requestedPrivileges
    </security
  </trustInfo>


Moderiert von user profile iconNarses: Code- durch XML-Tags ersetzt
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19341
Erhaltene Danke: 1752

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 27.08.09 21:58 
Naja, das ist auch ungültiges XML... Da fehlt der schließende Tag:
ausblenden XML-Daten
1:
2:
  ...
</assembly>
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 27.08.09 22:02 
user profile iconBiarchiv hat folgendes geschrieben Zum zitierten Posting springen:
die res file hab ich hochgeladen.

Damit kann man nichts anfangen, weil es ein kompiliertes Ressourcenskript ist.

Zitat:

Sie sieht so aus:
ausblenden volle Höhe XML-Daten
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 


<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"


<assemblyIdentity 
    name="SoftwareName" 
    processorArchitecture="*" 
    version="1.0.0.0" 
    type="win32"/> 


<description>Windows Shell</description


<dependency
    <dependentAssembly
        <assemblyIdentity 
            type="win32" 
            name="Microsoft.Windows.Common-Controls" 
            version="6.0.0.0" 
            processorArchitecture="x86" 
            publicKeyToken="6595b64144ccf1df" 
            language="*" 
        /> 
    </dependentAssembly
</dependency




  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"
    <security
      <requestedPrivileges
        <requestedExecutionLevel 
          level="requireAdministrator"/> 
      </requestedPrivileges
    </security
  </trustInfo>


Also ein Manifest.

Welche Ressourcen ID hat das Manifest? Manifeste müssen in der Ressource eine bestimmte ID haben, damit sie von Windows automatisch gefunden werden. Zeig uns noch mal dein unkompiliertes Ressourcenskript.

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Naja, das ist auch ungültiges XML... Da fehlt der schließende Tag:
ausblenden XML-Daten
1:
2:
  ...
</assembly>

Aha. Sage ich doch, dass die Ressource bzw. das enthaltene Manifest fehlerhaft ist.
Biarchiv Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: Fr 28.08.09 17:27 
Hallo,

leider ist mir mit copy and paste ein Fehler passiert. Der

ausblenden Delphi-Quelltext
1:
</assembly>					

Tag ist doch am Ende in der Resource. Also scheint die Resource keinen Fehler zu haben. Kann das jemand bestedigen?

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> 


<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> 


<assemblyIdentity 
    name="MyProgram" 
    processorArchitecture="*" 
    version="1.0.0.0
    type="win32"/> 


<description>Windows Shell</description> 


<dependency> 
    <dependentAssembly> 
        <assemblyIdentity 
            type="win32" 
            name="Microsoft.Windows.Common-Controls" 
            version="6.0.0.0
            processorArchitecture="x86" 
            publicKeyToken="6595b64144ccf1df" 
            language="*" 
        /> 
    </dependentAssembly> 
</dependency> 




  <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2"> 
    <security> 
      <requestedPrivileges> 
        <requestedExecutionLevel 
          level="requireAdministrator"/> 
      </requestedPrivileges> 
    </security> 
  </trustInfo> 


</assembly>


hinzufügen.

Hat das neue Delphi2010 eine fehlerfreie Manifest-Kombo für XP-Style und Zugriffrechte?

Man kann die Res Datei mit einem Resourcenprogramm wie ResHacker öffnen.
Biarchiv Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 688



BeitragVerfasst: Mo 31.08.09 15:05 
Hi,

geht der Code richtig mit dem aktuellen Delphi (ohne dialogs unit)?

Sonst würde ja beim D2006 diese Funktion (und/oder mehr) nicht mit dem Vista/7 Manifest kompatible sein, oder?