WinSetOnTop 0 & 1

  • Huhu :)

    Code
    While 1 
    If WinExists("Titel") Then 
    If WinActive("Titel") Then 
    WinSetOnTop("Titel", "", 1) 
    Else 
    WinSetOnTop("Titel", "", 0) 
    EndIf 
    EndIf 
    Sleep(100) 
    WEnd

    Folgendes Problem:

    Ein Fenster poppt irgendwann automatisch auf und ist zunaechst minimiert.

    Ist dann bei einer gewissen Aktion automatisch "restored" und AlwaysOnTop *nerv*

    Mit o.g. Code hab' ich das Fenster schon soweit ueberreden koennen, wenn es nicht den Focus hat, dass es nicht AlwaysOnTop ist.

    Das funzt aber noch nicht so ganz. Ich muss das Fenster immer erstmal anklicken und dann ein anderes Fenster anklicken, bevor ich das eigentlich nervende Fenster wirklich in den Hintergrund bekomme.

    Gibt es eine Moeglichkeit, diesem Fenster direkt, wenn es nicht mehr minimiert ist, zu sagen, Du bist NICHT TopMost sondern "TopBottom" also auf Desktopebene?

    Dass ich das erst zu sehen bekomme, wenn ich es anklicke quasi.


    Pls help :)

  • 'TopBottom' heißt für mich, dass alle anderen Fenster darüberliegen. Demnach habe ich das WinList-Beispiel mal ein wenig verändert um alle anderen Fenster einfach mal in den Vordergrung zu bringen. Ich finde das zwar sinnlos, aber vllt ist es ja genau das, was du brauchst.

    [autoit]

    Opt("WinWaitDelay",0)

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

    $var = WinList()
    $Bottom = 'Rechner' ;Trage hier den vollständigen Fenstertitel ein, von dem Fenster das am weitesten hinten sein soll!

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

    For $i = $var[0][0] To 1 Step -1
    If $var[$i][0] <> "" AND IsVisible($var[$i][1]) And $var[$i][0] <> $Bottom Then
    WinActivate($var[$i][0])
    WinWaitActive($var[$i][0])
    EndIf
    Next

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

    Func IsVisible($handle)
    If BitAnd( WinGetState($handle), 2 ) Then
    Return 1
    Else
    Return 0
    EndIf
    EndFunc

    [/autoit]
  • Ich hab's anders loesen koennen :D

    Code
    $n = "Titel" 
    If WinExists($n) Then 
    If WinActive($n) Then 
    WinSetState($n, "", @SW_RESTORE) 
    Else 
    WinSetState($n, "", @SW_MINIMIZE) 
    EndIf 
    EndIf