Fremdes Fenster über Taskleiste(Priorität wie Taskmanager)

  • Hallo,

    ich versuche ein fremdes Fenster die Priorität zu geben sich vor der Taskleiste zu stellen wenn das Fenster aktiv ist. Jedoch sich verhält wie vorher.
    Habe es mit


    _WinAPI_SetWindowLong($Hwnd, $GWL_EXSTYLE, $WS_EX_TOPMOST) versucht, aber dann passiert leider nichts...(Wohl mach ich da etwas falsch?)


    Und der simplere Befehl WinSetOnTop setzt das bild leider dauerhaft in den Vordergrund.


    Vielen Dank.

  • Hi,

    Wie schon geschrieben, das Fenster bleibt dann leider im totalen Fordergrund und das soll eben nicht passieren.
    Beim Wert 0 passiert natürlich gar nichts.

  • Bitte les Dir noch einmal meinen ersten Beitrag durch, wollte es schon gern so haben wie ich es beschrieben habe...
    Am besten schau Dir mal den Taskmanager an der hat genau die Fenstereigenschaft die ich möchte.

  • Unter Win8 ist der Taskmanager übrigens auch hinter der Taskleiste...

    Führt folgendes zum Erfolg?

    [autoit]

    #include <WinApi.au3>
    #include <Constants.au3>

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

    $hWnd = ...

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

    _WinAPI_SetWindowPos($hWnd, $HWND_TOPMOST, -1, -1, -1, -1, $SWP_NOMOVE)

    [/autoit]

    Gruß

  • Hi,

    das Fenster bleibt nun aber permanent im Fordergrund. Das soll ja gerade nicht passieren, es soll nur "Topmost" sein wenn es auch aktiv ist, sobald es inaktiv ist soll es sich wieder total normal halten.
    Ich kann mir nicht helfen, aber es scheint als wäre das nicht möglich?!

  • Du könntest einfach (am besten mit eine AdlibRegister-Funktion) abfragen ob das Fenster aktiv bzw. nicht aktiv ist und dann SEubo's Lösung nutzen. ;)

    Mfg

    There's a joke that C has the speed and efficieny of assembly language combined with readability of....assembly language. In other words, it's just a glorified assembly language. - Teh Interwebz

    C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do, you blow off your whole leg. - Bjarne Stroustrup
    Genie zu sein, bedeutet für mich, alles zu tun, was ich will. - Klaus Kinski

  • Ja, dazu müsste aber das Programm ständig laufen das ist für mich aber keine Option.

  • Eigentlich sollte das die folgende Zeile

    [autoit]

    _WinAPI_SetWindowPos($hWnd, $HWND_TOPMOST, -1, -1, -1, -1, $SWP_NOMOVE)

    [/autoit]

    Das TOPMOST-Attribut garnicht setzen, sondern das Fenster lediglich einmalig in der so genannten "Z-Order" nach Vorne holen.
    Wie sieht es aus, wenn du stattdessen dieses hier verwendest?

    [autoit]

    _WinAPI_SetWindowPos($hWnd, $HWND_TOP, -1, -1, -1, -1, $SWP_NOMOVE)

    [/autoit]
  • Hi,

    versuch das mal (bei mir ist das Fenster on Top, wenn aktiv und wenn nicht aktiv eben nicht on Top):

    [autoit]

    $win = "testing"

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

    if WinGetState($win,"") = 15 Then
    WinSetOnTop($win, "", 1)
    Else
    WinSetOnTop($win, "", 0)
    EndIf

    [/autoit]


    BTW: Toller Support von manchen.. Gemecker und Gemotze, sobald ein User zu blöde erscheint, Respekt!!!

    x0r

    Simon nörgelt, Simon nervt - aber Simon verbessert die Welt. Glaubt er.