Progressbar verdeckt MessageBoxen

  • Hallo Community,

    Ich starte ein Programm, welches eine Schleife durchläuft und lasse den Fortschritt in einem Progressbar anzeigen (ProgressOn).
    Allerdings gibt dieses Programm auch bei bestimmten Ereignisssen eine Messagebox aus, welche dann anscheinen hinter diesem Progressbar nicht sichtbar aufpopen und ich diese auch nicht lesen kann.

    Wie kann ich das ändern, zB den Progressbar weiter unten anzeigen lassen, oder am besten die Messageboxen darüber?

    Vielen Dank,
    Saft

    Einmal editiert, zuletzt von Saft (30. April 2009 um 13:47)

  • Du musst bei der Progressbar das TopMost-Attribut ausschalten (Option: 2)

    [autoit]

    ProgressOn ( "title", "maintext" , "subtext" , -1 , -1, 2)

    [/autoit]


    //Edit: oder du schaltest Topmost bei den Messageboxen an ( Flag += 0x40000 )

  • Warum nutzt Du nicht den 4. und 5. Parameter (x-Pos, y-Pos) der ProgressOn-Funktion ?

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • bei

    [autoit]

    ProgressOn

    [/autoit]

    gibt es eine Option (siehe Hilfe:

    Code
    2 = Without "always on top" attribute
    [autoit]

    ProgressOn ( "title", "maintext" [, "subtext" [, x pos [, y pos [, opt]]]] )

    [/autoit]

    // war zu langsam :P

  • Wenn ich das Attribut ausschalte, kommt die MsgBox, allerdings dannach der Progressbar nicht mehr :(

    Ich möchte ungern bei jeder MessageBox das anschalten, sind fast 1000 Zeilen und daran denk ich dann später bestimmt nicht mehr

    Aber schonmal Danke!

  • wie ich bereits geschrieben hab, setz deinen progress auf "nicht-topmost" fewrtig...

  • Richtig, das hab ich eingestellt:

    ProgressOn("Aktenimport", "Importdatei wird formatiert", "0 Akten bearbeitet" , -1 , -1, 2)

    es wird dann die nächste MsgBox angezeigt, allerdings nach dieser der Progressbar nicht mehr.
    (Es können öfter MsgBoxen auftauchen)

  • Erstell doch einfach mal ein kurzes (lauffähiges) Beispiel, das Deinen Fehler zeigt. Dann kann man Dir daran erklären was Du ggf. ändern musst.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Beim erstellen des Beispiels ist mir aufgefallen, dass die erste GUI dann den Progressbutton verdeckt, hier ein Beispiel:

    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    Local $msg

    [/autoit][autoit][/autoit][autoit]

    GUICreate("My GUI")
    GUISetState(@SW_SHOW)
    $OK_Btn = GUICtrlCreateButton("Test", 10, 110, 200, 25)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    While 1
    $msg = GUIGetMsg()

    [/autoit][autoit][/autoit][autoit]

    Select
    Case $msg = $OK_Btn
    main()
    EndSelect
    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    func main()

    [/autoit][autoit][/autoit][autoit]

    ProgressOn("Aktenimport", "Importdatei wird formatiert", "0 Akten bearbeitet" , -1 , -1, 2)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    For $i = 10 to 100 step 10
    sleep(1000)
    ProgressSet( $i, $i & " percent")
    MsgBox("","","Ich bin eine MsgBox")
    Next

    [/autoit][autoit][/autoit][autoit]

    ProgressSet(100 , "Done", "Complete")
    sleep(500)
    ProgressOff()

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    EndFunc

    [/autoit]

    Nochmals Danke für euer Bemühen :)

  • Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $msg

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("My GUI")
    GUISetState(@SW_SHOW)
    $OK_Btn = GUICtrlCreateButton("Test", 10, 110, 200, 25)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()

    Select
    Case $msg = $OK_Btn
    main()
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func main()

    [/autoit] [autoit][/autoit] [autoit]

    ProgressOn("Aktenimport", "Importdatei wird formatiert", "0 Akten bearbeitet")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $i = 10 to 100 step 10
    sleep(1000)
    ProgressSet( $i, $i & " percent")
    MsgBox(262144, "","Ich bin eine MsgBox")
    WinActivate("Aktenimport")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ProgressSet(100 , "Done", "Complete")
    sleep(500)
    ProgressOff()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]

    so?

  • Und wenn Du es so machst?

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Local $msg

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("My GUI")
    GUISetState(@SW_SHOW)
    $OK_Btn = GUICtrlCreateButton("Test", 10, 110, 200, 25)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    $msg = GUIGetMsg()

    [/autoit] [autoit][/autoit] [autoit]

    Select
    Case $msg = $OK_Btn
    main()
    exit
    EndSelect
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    func main()

    [/autoit] [autoit][/autoit] [autoit]

    ProgressOn("Aktenimport", "Importdatei wird formatiert", "0 Akten bearbeitet" , @DesktopWidth/2-100 , @DesktopHeight/2-200)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    For $i = 10 to 100 step 10
    sleep(1000)
    ProgressSet( $i, $i & " percent")
    MsgBox("","","Ich bin eine MsgBox")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    ProgressSet(100 , "Done", "Complete")
    sleep(500)
    ProgressOff()

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    EndFunc

    [/autoit]


    Evtl. hilft das ja.

    Edit: Schade, oliverh hatte schneller eine bessere Lsg. ;)

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Sehr gut Alina, genau so wollte ich das, das mit der Desktopmitte war mir neu :thumbup:

    Oliverh, wie gesagt, ich wollte nicht immer extra an jede MsgBox etwas ändern.

    Vielen Dank euch, mein Problem is gelöst :)