Message-Box wird nicht angezeigt

23/01/2012 - 19:48 von W. Wolf | Report spam
Hallo,

habe hier eine blöde Sache. Mein Entwickungsrechner (XP)
macht mir folgendes Problem: Ein Programm besteht aus

Public Sub Main()
MsgBox 1
End Sub
(keine weiteren Verweise)

Das kompiliere ich zu Projekt1.exe. Wenn ich dieser
Exe noch eine Projekt1.exe.manifest mit in das
Verzeichnis lege, wird die MsgBox nicht mehr angezeigt.
Meine Sound-Karte bringt aber noch den MsgBox-Ton.

Wenn ich in Main eine Form lade und diese anzeige, passiert
folgendes: In der Form_Initialize wird eine MsgBox nicht
angezeigt, in Form_Load jedoch schon.

Als Manifest verwende ich
http://www.vbarchiv.net/tipps/details.php?id’5
Gleiches passiert auch, wenn die Manifest als Ressource
in die Exe eingebunden ist. Ohne Manifest ist alles normal.

Wenn ich mit meinem W7-64 kompiliere, ist alles i.O.

Mein XP bzw. das VB6 auf dem XP hat also eine Macke.
Kennt das Problem hier jemand?

Schönen Gruß
W. Wolf
 

Lesen sie die antworten

#1 W. Wolf
24/01/2012 - 08:38 | Warnen spam
Guten Morgen,
Am 23.01.2012 19:48, schrieb W. Wolf:


Mein XP bzw. das VB6 auf dem XP hat also eine Macke.



Die Sache ist doch noch mal anders. Die MsgBox wird nàmlich nur auf
XP-Systemen unterdrückt. Auf W7 wird sie angezeigt, unabhàngig davon mit
welchem VB ich kompiliere.

Ich habe weitere XPs getestet und den gleichen Effekt wie beim ersten XP
gehabt, die MsgBox wurde nicht angezeigt. W7 und W2K Rechner zeigen die
Meldungen wie erwartet an. Betroffen ist also nur XP beim Ausführen der
Anwendung.

Inzwischen habe ich folgende Lösung gefunden:

Option Explicit

Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA"
(ByVal lpLibFileName As String) As Long
Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As
Long) As Long

Private m_hMod As Long 'Flag für LoadLibrary

Private Sub Form_Initialize()
MsgBox "Form_Initialize" 'wird unter XP nicht angezeigt
m_hMod = LoadLibrary("shell32.dll")
MsgBox "Form_Initialize" 'wird auch unter XP angezeigt
End Sub

Private Sub Form_Terminate()
If m_hMod <> 0 Then FreeLibrary m_hMod
End Sub

Vielleicht kann dieses Verhalten auch noch jemand erklàren? Stelle dazu
auch ein Muster-Projekt von nur 6KB online:
http://www.ww-a.de/download/xptest.zip

Viele Grüße
W. Wolf

Ähnliche fragen