Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Включить полноэкранный режим в Google Chrome

Ответить
Настройки темы
[решено] Включить полноэкранный режим в Google Chrome
Cem Cem вне форума

Аватара для Cem

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: Cem
Дата: 28-05-2016
Доброго времени суток, уважаемые форумчане! Столкнулся с такой проблемой: Необходимо включать/выключать полноэкранный режим в Google Chrome. Штатно это делается горячей клавишей F11, что собственно натолкнуло на мысли - примеры ниже
Скрытый текст

Код: Выделить весь код
HotKeySet("+{NUMPADADD}", "_Chrome")
_Chrome()
While 1
    Sleep(100)
WEnd
Func _Chrome()
$hChrom = WinGetHandle("[CLASS:Chrome_WidgetWin_1]")
WinActivate($hChrom)
WinWaitActive($hChrom)
Send("{F11}")
EndFunc


Скрытый текст

Код: Выделить весь код
#include <WinAPIProc.au3>
HotKeySet("+{NUMPADADD}", "_Chrome")
_Chrome()
While 1
    Sleep(100)
WEnd
Func _Chrome()
Local $aData = _WinAPI_EnumProcessWindows(ProcessExists('chrome.exe'))
WinActivate($aData[1][0])
WinWaitActive($aData[1][0])
ControlSend($aData[1][0], "", "", "{F11}")
EndFunc


Однако, Send и даже ControlSend не всегда срабатывают так как надо и в те моменты, когда эмуляция нажатия "F11" не достигает цели, сбивается вся очередность (вкл/выкл) полноэкранного режима.
Хотелось бы найти более элегантное решение, чем эмуляция клавиатурных нажатий в активное окно. (ControlSend чего-то тоже работает только с активным окном).
Смотрел в сторону ключа Google Chrome --kiosk, но пока не совсем понимаю как с этим работать. Запускается Хром в полноэкранном режиме, но вот выйти из этого режима не предоставляется возможным.
Может есть возможность "на лету" изменять параметры Хрома для вкл/выкл полноэкранного режима? Либо конкретно указывать Хрому - сейчас должен работать в полноэкранном режиме, а сейчас - нет! Может кто сталкивался?

Отправлено: 17:57, 28-05-2016

 

Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Cem, для начала попробуйте проверять результаты исполнения функций. Сейчас они у Вас попросту «висят в воздухе».

Цитата Cem:
Смотрел в сторону ключа Google Chrome --kiosk, но пока не совсем понимаю как с этим работать. »
Вам же не терминал на банкомате нужен?

Отправлено: 18:07, 28-05-2016 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

Cem Cem вне форума Автор темы

Аватара для Cem

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Цитата Iska:
Cem, для начала попробуйте проверять результаты исполнения функций. Сейчас они у Вас попросту «висят в воздухе».
»
Исправил. Функция будет запускаться по нажатию горячих клавиш "Shift"+"NumPad+".
Алгоритм работы:
Запустил скрипт -> Google Chrome перешел в полноэкранный режим
Нажал "Shift"+"NumPad+" -> Google Chrome вышел из полноэкранного режима
Еще раз нажал "Shift"+"NumPad+" -> Google Chrome снова перешел в полноэкранный режим.
и т.д.
Цитата Iska:
Вам же не терминал на банкомате нужен? »
Нет не для банкомата. Вообще всегда думал, что в банкоматах InternetExplorer используется.

Отправлено: 19:27, 28-05-2016 | #3


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Боюсь, Вы меня не поняли. Открывайте, например, Функция WinActivate, читайте раздел «Возвращаемое значение». Проверяйте это возвращаемое значение по каждой значимой функции.

Отправлено: 19:56, 28-05-2016 | #4

Cem Cem вне форума Автор темы

Аватара для Cem

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Вот добавил в код проверки:
Код: Выделить весь код
#include <WinAPIProc.au3>
HotKeySet("+{NUMPADADD}", "_Chrome")
_Chrome()
While 1
    Sleep(100)
WEnd
Func _Chrome()
If ProcessExists('chrome.exe')<>0 Then
Local $aData = _WinAPI_EnumProcessWindows(ProcessExists('chrome.exe'))
$Data1=WinActivate($aData[1][0])
	If $Data1<>0 Then
	ControlSend($Data1, "", "", "{F11}")
	Else
	$Data2=WinWaitActive($Data1)
	ControlSend($Data2, "", "", "{F11}")
	EndIf
ElseIf ProcessExists('chrome.exe')=0 Then
	MsgBox(0, "", "Запустить Хром и т.д.")

EndIf
EndFunc
Все равно функция работает нестабильно.

Да и вопрос стоял изначально в том, чтобы не высылать эмуляцию нажатия "F11" в окно, а решить это другим способом.

Отправлено: 22:46, 28-05-2016 | #5


Ветеран


Сообщения: 27449
Благодарности: 8086

Профиль | Отправить PM | Цитировать


Цитата Cem:
а решить это другим способом. »
Каким именно? Chrome не даёт возможностей Automation, в отличие от того же IE.

Можете попробовать поиграться с Chrome UDF - AutoIt Example Scripts - AutoIt Forums, но это потребует установки расширения в Chrome. Зато после этого, полагаю, получите доступ ко внутренностям браузера, и можно будет попробовать поиграться с таким jquery - Set window to fullscreen (REAL fullscreen; F11 functionality) by javascript - Stack Overflow:
Код: Выделить весь код
// Webkit (works in Safari and Chrome Canary)
element.webkitRequestFullScreen(); 
document.webkitCancelFullScreen();

Отправлено: 01:22, 29-05-2016 | #6

Cem Cem вне форума Автор темы

Аватара для Cem

Новый участник


Сообщения: 27
Благодарности: 0

Профиль | Отправить PM | Цитировать


Chrome UDF, конечно, круто, но с "AutoIT for Google Chrome.crx" глубокая печаль. Банится хромом на раз (даже в DEV режиме).
Зато нашел на просторах решение от Yashied:

Код: Выделить весь код
HotKeySet("+{NUMPADADD}", "_Chrome")
_Chrome()
While 1
    Sleep(100)
WEnd

Func _Chrome()
$List = WinList('[CLASS:Chrome_WidgetWin_1]')
For $i = 1 To UBound($List) - 1
    If BitAND(WinGetState($List[$i][1]), 2) Then
        $hWnd=WinActivate($List[$i][1])
	ControlSend($hWnd, "", "", "{F11}")
        ExitLoop
    EndIf
Next
EndFunc
В таком виде функция работает стабильно. Соответственно результат достигнут. Не вижу целесообразности искать еще какое-то химерное, труднореализуемое решение, когда есть стабильно работающий и простой код. Думаю, тему можно считать решенной.

Последний раз редактировалось Cem, 30-05-2016 в 21:56.


Отправлено: 08:00, 29-05-2016 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Включить полноэкранный режим в Google Chrome

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как включить авто обновление в Google Chrome 43 Andre21 Хочу все знать 3 13-06-2015 13:31
Интерфейс - Windows 7 Полноэкранный режим edgliux Microsoft Windows 7 31 11-01-2012 12:12
Интерфейс - Полноэкранный режим в Lineage 2 Jabka Microsoft Windows 7 4 07-10-2010 23:08
Интерфейс - Полноэкранный режим DOS приложений Gudvin Microsoft Windows Vista 1 18-03-2008 15:38
Медиа - Полноэкранный режим в медиаплеере? interminable Microsoft Windows 2000/XP 5 24-09-2007 11:06




 
Переход