Status abfragen: "Always On Top"

  • Hallo,

    ich habe an einem Script den Knopf 'TOP', der das Fenster, welches 3 sec nach Knopfdruck aktiv ist, immer oben hält. (mit WinSetOnTop).

    Wenn ich aber den Status wieder zurücknehmen möchte, sollte ich erkennen können, ob das aktive Fenster 'always on Top' ist oder nicht.

    Gibt es dazu eine Möglichkeit?

    [autoit]


    case $nMsg = $schalter_onTop
    beep(300,50)
    sleep(3000)
    $text = WinGetTitle("")
    ; erkennen ob 'onTop' oder nicht
    if 'NICHT ON TOP' then
    WinSetOnTop($text,"",1)
    else
    WinSetOnTop($text,"",0)
    endif
    beep(300,50)
    sleep(300)
    beep(300,50)

    [/autoit]

    Alternative ist 2 Knöpfe zu machen und der Anwender entscheidet.......

    Vielen Dank
    viele Grüße
    Carsten

    • Offizieller Beitrag

    Hi,

    Spoiler anzeigen
    [autoit]

    HotKeySet('1', '_isOnTop1')
    HotKeySet('2', '_setOnTop')

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

    Run('notepad')

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

    While 1
    Sleep(1000)
    WEnd

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

    Func _setOnTop()
    WinSetOnTop("Unbenannt - Editor", "", 1)
    ConsoleWrite('ONTOP' & @CRLF)
    EndFunc ;==>_setOnTop

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

    Func _isOnTop1()
    ConsoleWrite(_isOnTop(WinGetHandle("Unbenannt - Editor")) & @CRLF)
    EndFunc ;==>_isOnTop1

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

    Func _isOnTop($handle)
    $aEStyle = DllCall("user32.dll", "long", "GetWindowLong", "hwnd", $handle, "int", -20)
    If BitAND($aEStyle[0], 8) Then Return 1
    Return 0
    EndFunc ;==>_isOnTop

    [/autoit]

    So long,

    Mega