2012-12-27 1 views

ответ

4

Я отвечаю на свой вопрос, так как после некоторого исследования я нашел ответ от Запада немного не прав. Я пробовал обращаться к API-интерфейсам Windows в Pepper (PPAPI) Plugin, и он отлично работает с помощью командной строки «--register-pepper-plugins» (не -no-sandbox, как указано Западом). Кажется более безопасным использовать этот атрибут командной строки, поскольку он регистрирует только плагин в браузере Chrome и не удаляет песочницу. Я подумал о добавлении ответа после того, как нашел реальный перечный плагин, существующий в использовании, который использует коммутатор (плагин переполнения NetFlix для хромосов).

Получите дополнительную информацию для добавления. Доступен API Chrome, который предоставляет информацию для нескольких мониторов: chrome.systemInfo.display объект предоставляет всю необходимую информацию. Документация хрома не обновляется. Важно отметить, что в манифесте должно быть добавлено разрешение «systemInfo.display», чтобы использовать этот объект. Сообщается о двух ошибках в функциональности этого объекта.
1.Имя монитора одинаково для всех мониторов «Generic PnP Monitor», документация утверждает, что обеспечивает удобное имя мониторов.
2.Существует событие, которое должно быть вызвано при изменении разрешения мониторов, но событие никогда не будет вызвано.

В настоящее время реализация предназначена только для ОС Windows. Поддержка других ОС уже в пути. В документации говорится, что API доступен только для приложений Chrome, но я проверял это, и API также доступен в Chrome Extensions.

+0

Если я правильно вас понял, '--register-pepper-plugins' полезен для создания собственных вызовов ОС. Почему этот флаг поможет самой Chrome OS? Кроме того, знаете ли вы, есть ли способ указать путь к dll без использования переключателя командной строки (например, в файле .nmf)? Большое спасибо за вашу помощь! – AbdullahC

+1

Плагины для перца по своей сути имеют разрешение на использование собственных вызовов api. Но чтобы использовать их в Chrome, нам необходимо зарегистрировать их, и именно там помогает параметр командной строки -register-pepper-plugin. Я также пытался найти другой способ получить зарегистрированный плагин и имя dll, указанное через nmf , До сих пор я не сталкивался с таким вариантом. – MGR

+0

Спасибо @MGR! Кстати, какой был бы лучший способ попробовать плагин NetFlix? Мне понадобится Windows или Linux для этого? Исходя из комментариев в Интернете, кажется, что только для Chrome на Linux требуется этот переключатель командной строки. – AbdullahC

2

К сожалению, короткий ответ - «нет». Нативный клиент разработан как независимый от ОС и безопасный, как JavaScript. Подумайте о Native Client как о собственном коде, который имеет те же возможности и ограничения, что и JavaScript. Модуль Native Client, который вызвал вызовы Windows API, нарушит оба эти принципа проектирования: он не будет работать, например, Mac, и это будет серьезным риском для безопасности (представьте, что вы просматриваете веб-страницу, которая решает удалить файлы из ваш жесткий диск).

Поскольку вы упоминаете Chrome, вам может быть интересно узнать, что веб-приложения - независимо от того, используют ли они JavaScript или собственный клиент - могут запрашивать additional permissions в виде упакованных приложений в Интернет-магазине Chrome. Однако, по причинам, перечисленным выше, по-прежнему невозможны нативные вызовы ОС.

Плагины NPAPI не имеют этих ограничений, но будущее NPAPI, по крайней мере, в Chrome, является неопределенным (см. Последний абзац http://blog.chromium.org/2012/07/npapi-plug-ins-in-windows-8-metro-mode.html).

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

Если вы могли бы сказать немного больше о том, чего вы пытаетесь достичь, могут быть способы сделать это с помощью Native Client/Pepper.

+0

Благодарим вас за подробности, запад. Я разрабатываю полноэкранное приложение в Google Chrome, которое должно работать с несколькими мониторами. Должна быть возможность для пользователя переместить приложение на другие мониторы.Итак, мой плагин Google должен иметь возможность собирать информацию о каждом мониторе, отображать их и перемещать мое приложение на выбранный пользователем монитор. Было бы здорово, если получение деталей мультимонитора и окно браузера, перемещающихся на другой монитор, возможно без использования Win API. – MGR

+0

Хм, это тяжело. Невозможно выполнить то, что вы хотите в JavaScript или Pepper, так как в настоящее время нет API, который может надежно обнаруживать несколько мониторов. Лучшее, что вы можете сделать в этот момент, вероятно, выйти из полноэкранного режима и полагаться на пользователя, чтобы переместить окно, прежде чем вернуться в полноэкранный режим - это не отличное решение. Или NPAPI, но это тоже не очень привлекательный выбор. –

+0

Thanx West. С нетерпением ждем развития Pepper и Native Client до уровня, где он поддерживает такие вещи также из песочницы. – MGR