Что нового

Определить включено ли приложение на весь экран

Isn

Новичок
Сообщения
119
Репутация
3
Приветствую Всех пользователей форума.
Подскажите как можно определить развернуто ли окно на весь экран? Например игра.
За ранее спасибо.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Re: Определение состояния окна

Код:
WinGetState

не ленись читать справку :smile:
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Re: Определение состояния окна

Код:
WinGetState

Не покажет на весь экран или нет.
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Re: Определение состояния окна

Дополню для слепых и тех кто не считает себя таковым: :-X
Код:
; WinSetState("[ACTIVE]", "", @SW_MAXIMIZE)
; Извлекаем состояние активного окна
$iState = WinGetState("[ACTIVE]", "")

If BitAnd($iState, 32) Then
    $sText&='развёрнуто на весь экран'&@LF ; @SW_MAXIMIZE
Else
    $sText&='не развёрнуто на весь экран'&@LF ; @SW_RESTORE
EndIf

MsgBox(4096, "Сообщение", $sText)

Читайте справку внимательно
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Re: Определение состояния окна

Читал я справку и пробывал такой вариант не создал бы тему просто так, не показывает он то что развернуто на весь экран, я же выше указал что для игры, когда игра на весь экран.
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Re: Определение состояния окна

Мда... У меня все работает.
Код:
$iState = WinGetState("[ACTIVE]", "")
$i = False ; Пауза. По умолчанию "Закрыта"

HotKeySet("{+}", i) ; Клавиша паузы "Открыть"
;HotKeySet("{-}", i2) ; Клавиша паузы "Закрыть"
HotKeySet("{Esc}", _Exit) ; Клавиша выхода

While 1
   If $i = true Then ; Пауза. Дословно: Если пауза "Открыта" продолжить.
   If BitAnd($iState, 32) Then
      MsgBox(0, "Сообщение", "Приложение развернуто на весь экран") ; Вот вместо сообщения текст своего кода.
   Else
      MsgBox(0, "Сообщение", "Приложение не развернуто на весь экран")
   EndIf
   EndIf
WEnd

Func i() ; Функция паузы "Открыть"
   $i = True
EndFunc

; Func i2() Функция паузы "Закрыть". Для использования убрать ";"
;    $i = False
; EndFunc

Func _Exit() ; Функция выхода
   Exit
EndFunc

Теперь обьясняю как пользоваться. Запускаете скрипт, открываете игру, жмете на клавишу +. Перед вами высветится сообщение в котором вы узнаете развернут ли экран у активного окна или нет.


Добавлено:
Сообщение автоматически объединено:

Если вы делаете бота сусловием что окно игры развернуто на весь экран то я дополнил прошлое сообщение меткой куда его "сувать".
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Re: Определение состояния окна

Не работает твой код я писал же что таким методом не определяет, в твоем примере запускаю игру в оконном режиме выводит сообщение типа на весь что не является таковым и да у тебя ошибка в коде: у меня не работает если не заключить в кавычки на хоткей функцию.
Код:
HotKeySet("{+}", "i") ; Клавиша паузы "Открыть"
;HotKeySet("{-}", i2) ; Клавиша паузы "Закрыть"
HotKeySet("{Esc}", "_Exit") ; Клавиша выхода
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Re: Определение состояния окна

Isn, Dima1337
Сначала определитесь в терминологии. Окно, развёрнутое на весь экран, и работа приложения в полноэкранном режиме - это разные понятия.

Dima1337, ваш скрипт не работает для приложения, работающего в полноэкранном режиме. Для проверки нормализуйте окно SciTE (если оно у вас развёрнуто), нажмите F11 (редактор перейдёт в полноэкранный режим) и проверьте работу скрипта.
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Re: Определение состояния окна

Уточняю, "работа приложения в полноэкранном режиме"
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Re: Определение состояния окна

http://autoit-script.ru/index.php?topic=311.0
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Re: Определение состояния окна

InnI работает, но вопрос как сделать для определенной игры, а не только для активного.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Re: Определение состояния окна

Isn [?]
сделать для определенной игры
Вот в этой строке
Код:
Local $hWnd = DllCall('user32.dll', 'hwnd', 'GetForegroundWindow')
определяется дескриптор активного окна. Вам нужно получить дескриптор нужного вам окна при помощи любой из функций
Код:
Local $hWnd = WinWait()
Local $hWnd = WinWaitActive()
Local $hWnd = WinGetHandle()

После этого замените все вхождения $hWnd[0] на просто $hWnd.
 

Dima1337

Осваивающий
Сообщения
186
Репутация
24
Re: Определение состояния окна

[box title=OffTopic]InnI, Каков вопрос таков ответ :-X Замечание по поводу терменологии полностью верно.[/box]
 
Автор
Isn

Isn

Новичок
Сообщения
119
Репутация
3
Re: Определение состояния окна

Сделал так:
Код:
#Include <WinAPI.au3>

HotKeySet('{F8}', '_HotKey')

While 1
    Sleep(10)
WEnd

Func _WinFullScreen()
    Local $hWnd = DllCall('user32.dll', 'hwnd', 'GetForegroundWindow')
    If (@error) Or ($hWnd[0] = 0) Then
        Return SetError(1, 0, 0)
    EndIf
    If (StringInStr(WinGetClassList($hWnd[0]), 'SHELLDLL_DefView') = 0) And (BitAND(WinGetState($hWnd[0]), 2) = 2) And (_WinAPI_GetClientWidth($hWnd[0]) = @DesktopWidth) And (_WinAPI_GetClientHeight($hWnd[0]) = @DesktopHeight) Then
        Return 1
    EndIf
    Return 0
EndFunc

Func _HotKey()
	$sWinFullScreen = _WinFullScreen()
	If WinActive('Игра','') Then
		If $sWinFullScreen = 1 Then
			MsgBox(0, "", "Игра запущенна в полноэкранном режиме")
                       Else
                                  MsgBox(0, "", "Игра запущенна не в полноэкранном режиме")      
		EndIf
	EndIf
EndFunc


InnI и Dima1337 спасибо за ответы.
Тема решена.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Re: Определение состояния окна

Isn,
Почитал тему и
Предупреждение За нарушение правил форума (пункт Б.5):
Имя темы должно нести смысловую нагрузку (отражать суть вопроса/проблемы)
Правильно сформулированное название темы привлекает больше внимания, и шансы получить конкретный ответ увеличиваются.


Данные правила могут пополняться локальными правилами раздела.
Как правильно называть темы

"Определение состояния окна" - это неприемлемое название темы, переименуйте тему иначе она будет закрыта, а вам возможно будет выдан бан на несколько дней.

С уважением, ваш Глобальный модератор.








Почитайте еще здесь:Получение нотификации об изменении активного окна
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
InnI [?]
нажмите F11 (редактор перейдёт в полноэкранный режим)
Данный пример некорректен, т.к. SciTE, оказывается, не переходит в полноэкранный режим, а просто растягивает окно. Лучше тренироваться на IE или на просмотрщике фотографий.
 
Верх