Как определить приложение на переднем плане в Chrome OS?

Я пытаюсь создать расширение (или приложение) Chrome для ОС Chrome, которое отслеживает приложение переднего плана, с которым в данный момент взаимодействует пользователь.

Например, если пользователь:

  1. играет Angry Birds несколько минут; затем
  2. просматривает некоторые веб-страницы с помощью Chrome и, наконец,
  3. делает некоторые расчеты с помощью калькулятора

затем я хочу, чтобы мое расширение (или приложение) могло обнаруживать и реагировать на эти три перехода по мере их возникновения. В идеале информация о приложении, которую я хотел бы получить, - это либо имя приложения (например, "Angry Birds"), и / или идентификатор приложения (например, com.somecompany.someapp).

Я уже экспериментировал с несколькими API-интерфейсами Chrome. *, Но пока мне не повезло:

  • chrome.windows а также chrome.tabs может только перечислять окна / вкладки браузера (не те из приложений).
  • chrome.app.window может перечислять только те окна, которые являются частью его собственного приложения (но не других приложений).
  • Приложения отправляются только свои chrome.app.runtime события жизненного цикла, а не события других приложений.
  • Я мог бы использовать OCR на экране, предоставленном chrome.desktopCapture но мне, вероятно, придется написать конкретный код для каждого приложения, которое я хочу поддерживать, и это будет очень загружать процессор.

Мне повезло, что я выполнял аналогичную работу на других платформах (Windows, Mac, Linux и даже Android), используя клиентские API для специальных возможностей (те же API, которые используются программами чтения с экрана для людей с ограниченными возможностями). К сожалению, Chrome OS не поддерживает сторонних клиентов.

2 ответа

Есть запрос на добавление дополнительных типов окон к результатам chrome.windows.getAll() - см. Http://crbug.com/394341

Расширения Chrome и API приложений перечислены здесь: Расширения, Приложения.

(Не) к счастью, там нет ничего, что позволило бы шпионить за пользовательской активностью вне вашего контекста. Приложения обычно ограничиваются тем, что в них происходит (плюс некоторые аппаратные уведомления), а расширения, как правило, ограничиваются тем, что происходит в браузере.

Вы можете обнаружить потерю фокуса в браузере / приложении, но вы не можете сказать, куда направился фокус.
Например, chrome.windows.onFocusChanged о событии продления -1 для всех окон, которые не являются частью браузера, даже если это приложение Chrome.

Другие вопросы по тегам