Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Включить полноэкранный режим в Google Chrome (http://forum.oszone.net/showthread.php?t=315336)

Cem 28-05-2016 17:57 2638325

Включить полноэкранный режим в Google Chrome
 
Доброго времени суток, уважаемые форумчане! Столкнулся с такой проблемой: Необходимо включать/выключать полноэкранный режим в 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, но пока не совсем понимаю как с этим работать. Запускается Хром в полноэкранном режиме, но вот выйти из этого режима не предоставляется возможным.
Может есть возможность "на лету" изменять параметры Хрома для вкл/выкл полноэкранного режима? Либо конкретно указывать Хрому - сейчас должен работать в полноэкранном режиме, а сейчас - нет! Может кто сталкивался?

Iska 28-05-2016 18:07 2638333

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

Цитата:

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

Вам же не терминал на банкомате нужен?

Cem 28-05-2016 19:27 2638370

Цитата:

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

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

Цитата Iska
Вам же не терминал на банкомате нужен? »

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

Iska 28-05-2016 19:56 2638378

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

Cem 28-05-2016 22:46 2638400

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

#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" в окно, а решить это другим способом.

Iska 29-05-2016 01:22 2638421

Цитата:

Цитата 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();


Cem 29-05-2016 08:00 2638438

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

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


Время: 16:44.

Время: 16:44.
© OSzone.net 2001-