MessageBox automatisch schliessen
-
und vielleicht auch noch kontrollieren ob die dll überhaupt geladen wurde.
Hier wäre noch ein Beispiel
http://www.codeproject.com/cpp/MessageBoxTimeout.asp
Ich denke aber, dass eine selbst erzeugte MessageBox etwas einfacher wäre.
-
na dann versuche ichs mal mit deinen änderungsvorschlägen!
Ich habe zwischenzeitlich eine andere Methode ausprobiert (die ebenfalls die user32.dll verwendet).Der Code lässt sich zwar kompilieren, aber der enthaltene Aufruf:
MsgBoxTOA = (MSGBOXAAPI)GetProcAddress(hUser32, "MessageBoxTimeoutA");liefert NULL zurück. Ein anschliessendes GetLastError liefert "127". Nachdem was ich bislang gefunden habe heisst das das die Methode nicht gefunden wurde.
Ich nutze Win2K, kann es sein das die user32.dll meines systems nicht damit funktioniert?
Weiterhin habe ich 2 verschiedene user32.dll dateien auf meinem system. eine user32.dll (ältere dateiversion) und eine USER32.dll (neuere Version).Werde jetzt trotzdem nochmal dein Beispiel versuchen...
-
Du kannst ja mit ImpDef in der User32.dll mal nachschauen ob diese Funktion existiert und wenn welche Signatur sie hat.
-
jau, werde das mal versuchen.
Bei deiner Version habe ich nämlich jetzt den selben "fehler".MessageBoxTimeOutWFunc pMessageBoxTimeout = (MessageBoxTimeOutWFunc)GetProcAddress(hMod,"MessageBoxTimeoutW");nach diesem aufruf ist pMessageBoxTimeout immer noch NULL (daher wohl auch die Exception bei meinem ersten versuch)
Ein Aufruf von GetLastErrorMessage liefert hier auch "127"...
-
hmmm...
Hier ein Auszug nach Ausführung von impdef:MessageBoxA @452 ; MessageBoxA
MessageBoxExA @453 ; MessageBoxExA
MessageBoxExW @454 ; MessageBoxExW
MessageBoxIndirectA @455 ; MessageBoxIndirectA
MessageBoxIndirectW @456 ; MessageBoxIndirectW
MessageBoxW @457 ; MessageBoxW
-
Welche Windowsversion hast du denn. Ich hab irgendwo mal gelesen, dass es diese Funktion erst ab XP gibt. Ich hab W2k und da ist sie auch nicht dabei.
-
Tja, dann wird das so nichts unter 2000, deswegen ist sie wohl auch undokumentiert.
-
jou, nutze hier win2k

Und sonst gibt es da keine Möglichkeit?
Ich komme eigentlich aus der "Java-Ecke" und da wäre sowas eigentlich kein Problem ...Trotzdem schonmal Danke an alle für die Hilfe!!!
Nachtrag
SendMessageTimeoutA <-- das finde ich bei der user32.dll, aber das is was anderes oder?
-
Wie gesagt, mach es selbst.
Einfach eine kleine Form erstellen. Die notwendigen Buttons, Labels etc. drauf. Dann im OnShow einen Timer starten und in OnTimer Close() aufrufen. Fertig.
-
ok, werde es so machen, Danke!
-
Guck dir hier mal meine TimedMessagebox an: http://www.luckie-online.de/Developer/Delphi/Sonstiges/ -> TimedMsgBox.zip. Ist zwar Delphi aber das dürfte egal sein.