ExtMsgBox anzeigen als "Splashscreen"

  • Hallo Gemeinde,

    ich würde gerne eine ExtMsgbox anzeigen lassen und in der Zwischenzeit soll eine Func geladen werden, die einen Parameter prüft und dann ihrerseits eine andere Funktion aufruft.

    Also so auf die Art Splashscreen...

    Spoiler anzeigen

    ; Aufruf der ExtMsgBox die 3 Sekunden angezeigt wird:

    If $s_Schreib = 1 Then

    $s_hVar = _ExtMsgBox(128, "Ok", "CompInfoby HaSc ", " HW-Config is written into file. HW-Summary will be created...", 3)

    HWS() ; das ist die Funktion, die eigentlich parallell zur ExtMsgBox laufen soll...

    Exit (0)

    Else

    Exit (1)

    EndIf

    wie könnte man das realisieren?

  • Hallo AspirinJunkie,

    klar, ist mir bekannt. Ich habe es mal so getestet:

    Spoiler anzeigen

    If $s_Schreib = 1 Then

    Local $sDestination = _ExtMsgBox(128, "Ok", "CompInfoby HaSc ", " HW-Config is written into file. HW-Summary will be created...")

    SplashImageOn("Splash Screen", $sDestination, 500, 400)

    HWS()

    Exit (0)

    Else

    Exit (1)

    EndIf

    ; SplashOff() wird in der von HWS() aufgerufenen Func ausgeführt.

    so geht es aber nicht. Der Splash steht solange da, bis man die ExtMsgBox schliesst und das Proggi macht in der Zwischenzeit auch nicht weiter.
    Führt also den Code bis SplashOff nicht aus, auch nicht wenn ich die ExtMsgBox per Countdown auslaufen lasse...

  • Mit dem Beispiel kann ich nichts anfangen.
    $s_Schreib, _ExtMsgBox() und HWS() sind nicht definiert, so dass kein Außenstehender dies testen kann.

    Was wann erscheinen soll und in welcher Reihenfolge etwas aufgerufen werden soll erschließt sich mir aus dem Codeschnipsel ebenso nicht wirklich.

    Der Splash steht solange da, bis man die ExtMsgBox schliesst

    SplashImageOn() wird erst nach der _ExtMsgBox aufgerufen.

    Während der Ausführung sollte dort also kein Splashfenster erscheinen - außer die _ExtMsgBox ist ebenso nicht blockierend.

    Ansonsten hatte ich dich so verstanden, dass die ExtMsgBox() dein Versuch war ein solches Splashfenster zu realisieren.
    Nun hast du aber zusätzlich noch das SplashImage eingebaut - also sollen das jetzt 2 Splashfenster werden die gleichzeitig angezeigt werden sollen?

  • Hallo AspirinJunkie,

    Der Codeschnipsel sollte nur das Problem verdeutlichen, dass der Splash zwar aufgerufen wird und dabei die ExtMsgBox angezeigt wird
    aber das Script geht eben nicht weiter sondern bleibt an der Stelle stehen und du hast recht, es war nur ein Test um zu schauen ob sich das so realisieren lässt.
    Ich will in der IF-Abfrage einen Splash anzeigen, bis die Funs HWS() fertig ist und ihrerseits die Func HaWe() aufgerufen hat. Dort würde ich dann als erstes mit SplashOff()
    den Splash beenden...

    Da die ExtMsgBox die Countdown-Funktion bietet dachte ich man könnte dies als Splash i-wie einsetzen....

    Kannst du mir eventuell erklären wie man ein "Splash" grundsätzlich aufruft und anzeigt und das Proggi währenddessen weiter macht?

  • Ich will in der IF-Abfrage einen Splash anzeigen, bis die Funs HWS() fertig ist und ihrerseits die Func HaWe() aufgerufen hat. Dort würde ich dann als erstes mit SplashOff() den Splash beenden...

  • Hallo Aspirinjunkie,

    vielen lieben Dank für die "Erklärung". Also ich habe beide Versionen getestet. SplashTextOn und SplashImageOn funktionieren. Nur nicht in Verbindung mit der ExtMsgBox.

    Hättest du eine Idee ob man das i-wie realisieren könnte?

  • Also die _ExtMsgBox ist eine customizable MsgBox aus der <ExtMsgBox.au3>. Habe ich im Forum mal gefunden.
    Damit lässt sich eine "MsgBox" ertellen, die man entgegen der Windows-MsgBox formatieren kann. Die von mir benutzte zeigt
    ein gelbes Fenster an. Links sieht man einen Countdown und in der Mitte steht der Meldungstext. Erklärung siehe Spoiler.

    Spoiler anzeigen


    _ExtMsgBox(128, "Ok", "CompInfoby HaSc ", " HW-Config is written into file. HW-Summary will be created...", 10) ; 128 = Coutndown, Button OK, Titel, Meldung, Timeout

    ;Ausschnitt aus der UDF

    ; #INDEX# ============================================================================================================

    ; Title .........: ExtMsgBox

    ; AutoIt Version : v3.2.12.1 or higher

    ; Language ......: English

    ; Description ...: Generates user defined message boxes centred on a GUI, on screen or at defined coordinates

    ; Remarks .......:

    ; Note ..........:

    ; Author(s) .....: Melba23, based on some original code by photonbuddy & YellowLab, and KaFu (default font code)

    ; ====================================================================================================================

    Ich wollte eigentlich mit der ExtMsgbox vermeiden einen "richtigen" Splashscreen zu schreiben aber da es nicht geht diese in SplashText, bzw. Splashimage
    zu integrieren, werde ich wohl doch einen Splashscreen schreiben müssen ;(

    Außer es hätte jemand eine andere Idee...

  • Also die _ExtMsgBox ist eine customizable MsgBox aus der <ExtMsgBox.au3>. Habe ich im Forum mal gefunden.

    Du meinst sicher die UDF von Melba23 :

    Extended Message Box - New Version: 19 Nov 21
    Are you annoyed by the limitations of the standard Windows message dialog created by MsgBox? Would you like to have coloured backgrounds and text? To choose…
    www.autoitscript.com

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hallole,

    ja es ist die von Melba23. Musashi hat recht.

    MojoeB: da zunächst der Aufruf von Splash in Verbindung mit der ExtMsgbox nicht ging, hatte ich gedacht frage ich mal nach.
    Das was die beiden aufgerufenen Funktionen machen spielt dabei, wenn überhaupt, nur eine untergeordnete Rolle. Deshalb hatte ich den Code nicht näher ausgeführt.
    Ich habe schon richtige Splashscreens geschrieben aber ich dachte vielleicht kann man ja die ExtMsgBox i-wie dazu verwenden. Das wäre viel weniger aufwändig...

  • Das was die beiden aufgerufenen Funktionen machen spielt dabei, wenn überhaupt, nur eine untergeordnete Rolle.

    Und genau das ist völlig falsch!

    Die ExtMsgBox benutzt eine eigene MsgLoop und stellt somit einen blockierenden Code dar.

    Wie soll "nebenbei" noch eine andere Funktion ausgeführt werden, wenn der Prozess bereits "blockiert" wird?

    Die Lösung ist also: entweder eine eigene Gui erstellen oder die UDF umschreiben.

  • Hi,

    hipfzwirgel , wie Oscar bereits beschrieben hat, ist ExtMsgBox per Konstruktion "Modal", was in diesem Zusammenhang bedeutet, dass es eine Abhängigkeit zu einer Interaktion mit dem User gibt. Klartext: Das Fenster bleibt so lange auf dem Schirm und das Programm so lange angehalten, bis der User mit dem Fenster interagiert!

    Wenn du ein "Nicht-modales Fenster mit der Darstellung der ExtMsgBox brauchst, wieso änderst du dann nicht einfach Melbas code zu einer Funktion ExtMsgBox_nonmodal? Die gibt dann nicht den Statuscode der Funktion zurück den du sowieso nicht brauchst sondern den Handle der GUI, also $hMsgGUI.

    Du musst doch nur die Abfrageschleife für die Buttons und den Timeout löschen und die "ExtMsgBox"-GUI nach dem Aufruf deiner Funktion(en) HWS/HaWe löschen...wie bei einer "selbstgestrickten" GUI auch?! Da geht zwar 90% der Funktionalität der ExtMsgBox() flöten, aber die brauchst du doch für deinen Anwendungsfall nicht!

    Wobei ich persönlich mir diesen Krampf nicht antun würde...Eine GUI nach GENAU DEINEN VORGABEN zu erstellen und zu managen sollte auch nicht das Problem sein.

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    4 Mal editiert, zuletzt von Andy (27. Oktober 2022 um 08:36)

  • Hallo zusammen,

    vielen lieben Dank für eure Denkansätze.

    Die Vorschläge die UDF umzuschreiben oder dergleichen würden ja genau das beinhalten was ich umgehen wollte: Zu viel Aufwand 8)
    Ich betrachte die Fragestellung als gelöst und erstelle ggf. einen eigenen Splashscreen.