Что нового

[Окна, Диалоги] Как получить текущее состояние окна, установленное функцией WinSetOnTop

arthemy

Новичок
Сообщения
2
Репутация
0
Хочется сделать так, чтобы по хоткею переключалось состояние активного окна "поверх всех".
Устанавливаю его стандартно:
Код:
Func WinTopOn() ; Окно поверх всех
	Sleep(300)
	Local $hWnd = WinGetHandle("[ACTIVE]") ; Возвращает дескриптор активного окна
	WinSetOnTop($hWnd, "", 1)	; Устанавливает активное окно в состояние "Поверх всех окон".
EndFunc


Но как переключить обратно в одной функции, что-то типа получить состояние WinGetOnTop и переключить в обратное? Поиском ничего толкового не нашел.
 

InnI

AutoIT Гуру
Сообщения
4,950
Репутация
1,445
arthemy
переключить обратно в одной функции
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>

$hWnd = WinGetHandle("[class:Notepad]")
WinSetOnTop($hWnd, "", Not BitAND(_WinAPI_GetWindowLong($hWnd, $GWL_EXSTYLE), $WS_EX_TOPMOST))
 
Автор
A

arthemy

Новичок
Сообщения
2
Репутация
0
Спасибо заработало:
Код:
#include <WinAPI.au3>
#include <WindowsConstants.au3>
Func WindowsTopChange() ; Окно поверх всех
	Sleep(300)
	Local $hWnd = WinGetHandle("[ACTIVE]") ; Возвращает дескриптор активного окна
	WinSetOnTop($hWnd, "", Not BitAND(_WinAPI_GetWindowLong($hWnd, $GWL_EXSTYLE), $WS_EX_TOPMOST)) ; Переключает состояние "Поверх окон"
EndFunc
 
Верх