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

Ответить
Аватара пользователя
Cem

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

Сообщение Cem »

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



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

[spoiler]Код:
[/spoiler]

Код: Выделить всё

HotKeySet("+{NUMPADADD}", "_Chrome")
_Chrome()
While 1
    Sleep(100)
WEnd
Func _Chrome()
$hChrom = WinGetHandle("[CLASS:Chrome_WidgetWin_1]")
WinActivate($hChrom)
WinWaitActive($hChrom)
Send("{F11}")
EndFunc











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

[spoiler]Код:
[/spoiler]

Код: Выделить всё

#include 
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, но пока не совсем понимаю как с этим работать. Запускается Хром в полноэкранном режиме, но вот выйти из этого режима не предоставляется возможным.

Может есть возможность "на лету" изменять параметры Хрома для вкл/выкл полноэкранного режима? Либо конкретно указывать Хрому - сейчас должен работать в полноэкранном режиме, а сейчас - нет! Может кто сталкивался?
Аватара пользователя
Iska

Re: [решено] Включить полноэкранный режим в Google Chrome

Сообщение Iska »

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




Цитата Cem:



Смотрел в сторону ключа Google Chrome --kiosk, но пока не совсем понимаю как с этим работать.
[решено] Включить полноэкранный режим в Google Chrome




Вам же не терминал на банкомате нужен?
Аватара пользователя
Cem

Re: [решено] Включить полноэкранный режим в Google Chrome

Сообщение Cem »

Цитата Iska:



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

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




Исправил. Функция будет запускаться по нажатию горячих клавиш "Shift"+"NumPad+".

Алгоритм работы:

Запустил скрипт -> Google Chrome перешел в полноэкранный режим

Нажал "Shift"+"NumPad+" -> Google Chrome вышел из полноэкранного режима

Еще раз нажал "Shift"+"NumPad+" -> Google Chrome снова перешел в полноэкранный режим.

и т.д.


Цитата Iska:



Вам же не терминал на банкомате нужен?
[решено] Включить полноэкранный режим в Google Chrome




Нет не для банкомата. Вообще всегда думал, что в банкоматах InternetExplorer используется.
Аватара пользователя
Iska

Re: [решено] Включить полноэкранный режим в Google Chrome

Сообщение Iska »

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

Re: [решено] Включить полноэкранный режим в Google Chrome

Сообщение Cem »

Вот добавил в код проверки:



Код:

Код: Выделить всё

#include 
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 $Data10 Then
	ControlSend($Data1, "", "", "{F11}")
	Else
	$Data2=WinWaitActive($Data1)
	ControlSend($Data2, "", "", "{F11}")
	EndIf
ElseIf ProcessExists('chrome.exe')=0 Then
	MsgBox(0, "", "Запустить Хром и т.д.")
EndIf
EndFunc

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



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

Re: [решено] Включить полноэкранный режим в Google Chrome

Сообщение Iska »

Цитата Cem:



а решить это другим способом.
[решено] Включить полноэкранный режим в Google Chrome




Каким именно? 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();
Аватара пользователя
Cem

Re: [решено] Включить полноэкранный режим в Google Chrome

Сообщение Cem »

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

Зато нашел на просторах решение от Yashied:



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

[spoiler]
https://autoit-script.ru/index.php.htm?t...32353#msg32353
[/spoiler]






Код:

Код: Выделить всё

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

В таком виде функция работает стабильно. Соответственно результат достигнут. Не вижу целесообразности искать еще какое-то химерное, труднореализуемое решение, когда есть стабильно работающий и простой код. Думаю, тему можно считать решенной.
Ответить

Вернуться в «AutoIt»