Использование NPAPI для обнаружения сворачивания браузера

#plugins #npapi

#Плагины #npapi

Вопрос:

Есть ли способ использовать NPAPI, чтобы определить, свернут ли браузер.

Ответ №1:

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

Например, в Windows вы могли бы получить HWND браузера (NPN_GetValue с помощью NPNVnetscapeWindow), а затем проверить состояние этого окна с помощью вызовов Windows API.

На Mac вам будет сложнее с этим; возможно, вы могли бы интуитивно понять, используя информацию об ограничении, переданную в NPP_SetWindow, но это не говорит вам, свернут ли браузер или плагин (или даже вкладка) просто не виден. Опять же, вам нужно было бы попытаться найти способ использовать системные вызовы, чтобы вернуться к реальному окну, но на Mac это будет очень нетривиально.

Linux Я не уверен; вы получаете GtkSocket, если используете XEmbed (единственное, что поддерживает Chromium), и я понятия не имею, можете ли вы использовать это, чтобы вернуться туда, где вам нужно быть, чтобы проверить свернутое состояние.

Итак, короткий ответ — нет; NPAPI не предоставляет ничего подобного. Вам просто нужно попытаться найти что-то, что он предоставляет, что дает вам достаточно информации, чтобы взломать его.

Ответ №2:

Поскольку я использовал основной слой анимации. Я ввел таймер, который проверяет, как часто вызывается обратный вызов candraw. Если разница во времени между двумя обратными вызовами больше секунды, я предполагаю, что либо мой плагин свернут, либо скрыт.