Что нового

Почему WinGetState возвращает неверное значение статуса окна?

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
agikon [?]
с этого примера не возвращается 16
Так там нигде и не указано, что должно вернуться 16.
Вот представьте, что состояние окна возвращается в виде строки: имеетсяотображаетсядоступноразвернуто. А другая функция определяет - есть ли в этой строке слово "развёрнуто". Т.е. состояние окна не возвращается сразу, как "развёрнуто", а нужно найти в куче текущих состояний нужное. Вот об этом и пример в справке.
 
Автор
A

agikon

Знающий
Сообщения
789
Репутация
17
AZJIO
InnI
Спасибо, я кажись понял.
Всё дело в ньюансах, то есть даже если окно активно но на весь экран, или не на весь экран то будут разные значения, а я этого не знал.
И как раз ждал значения 32 когда окно активно но не на весь экран. А оказывается 32 из суммы 47 будет тогда если окно развёрнуто на весь экран (а если активно но не на весь то сумма будет 15, а не 47)

Да,да пример из справки верен, это я не учитывал ньюансы.

Вот дополнил пример из справки на все случаи положения окна.
Код:
sleep(3000); чтобы успеть надать окну нужное положение
 $state = WinGetState("1.txt - Блокнот", "")

If BitAnd($state, 32) Then
		If BitAnd($state, 8) Then
			MsgBox(0, "окно отображается, активно", $state)
		else
			MsgBox(0, "окно отображается, не активно", $state)
		endif
else
	If BitAnd($state, 16) Then
		MsgBox(0, "окно свёрнуто", $state)
	else
		If BitAnd($state, 4) Then
			If BitAnd($state, 8) Then
				MsgBox(0, "окно отображается, но не на весь экран, активно", $state)
			else
				MsgBox(0, "окно отображается, но не на весь экран, не активно", $state)
			endif
		else
		endif
	endif
EndIf
 
Верх