2016-06-08 3 views
0

Мое приложение - оверлей (alwaysOnTop) для полноэкранной игры, и когда пользователь нажимает на мой оверлей, он фокусируется и показывает панель задач поверх своей игры. Взятие фокуса прекрасное, но я не могу показать панель задач.Electron BrowserWindow показывает панель задач при сфокусировке

Это говорит в BrowserWindow docs:

не окно инструментов, которые не могут быть направлены на

Подразумевая, что можно создать окно, которое не может быть в центре внимания.

Кто-нибудь знает, как создать окно панели инструментов, или просто избегать отображения панели задач при нажатии на электронное окно?


Я должен упомянуть, что я пытался setAlwaysOnTop и skipTaskbar. У меня также есть transparent: true и frame: false.


Оверлей, который я создал, это кнопки «Safelane, Midlane, Offlane». При запуске приложения оно показывает в верхней части экрана полного приложения (Dota 2), как это:

enter image description here

После нажатия кнопки на интерфейсе появляется панель задач. Было бы хорошо, что полный экран приложение (Dota) теряет фокус, на вершине которой нарушается непрерывность опыта появляется панель задач:

enter image description here

Я хотел бы опыт, чтобы остаться, как первый image- - Когда пользователь нажимает на что-либо в моем наложении, панель задач не должна отображаться.

Electron GitHub Issue


Дополнительная информация Решение - После того, как с помощью раствора Gaafar в ниже

Установка kiosk: true в установке, кажется, не позволяют ему оказывать прозрачный. Использование setKiosk(true) в пределах setTimeout после того, как окно было открыто, похоже, сработало.

Я также обнаружил, что любые окна с использованием kiosk или fullscreen с прозрачностью имели проблему рендеринга. Он будет отображаться несколько раз поверх самого себя и не может деинсталлировать элементы (отображение: none в css ничего не сделает). Я исправил это, используя Electron Window Manager, создав одно окно kiosk, в котором ничего нет, и создаем другие окна без киоска с интерфейсами HTML/CSS. Результат:

  1. Все интерфейсы могут взаимодействовать с мышью и клавиатурой.
  2. Рендеринг происходит, как и в электронном виде.
  3. Приложение в полноэкранном режиме получает входные данные через любые прозрачные области.
  4. Панель задач никогда не отображается на любом входе.
+0

Можете ли вы предоставить некоторые скриншоты того, что происходит и что вы хотите, чтобы произошло? –

+0

Готово. Дайте мне знать, если я могу добавить что-нибудь еще. – Matt

ответ

1

skipTaskbar: true - не показывать свое приложение на панели задач.

Чтобы скрыть панель задач полностью использовать полноэкранный режим или режим киоска вместо

fullscreen: true или kiosk: true

EDIT: Есть некоторые вопросы, открытые, где полноэкранные или киоска режимы предотвращают прозрачность окна. Решение, которое работает для меня, чтобы работать с этими флагами --enable-transparent-visuals --disable-gpu

выпуска & решение: https://github.com/electron/electron/issues/2170#issuecomment-145942717

+0

Я был обеспокоен тем, что полноэкранный режим предотвратит клики в прозрачных областях, но похоже, что это сработает! Я посмотрю, смогу ли я его полностью реализовать, и если все будет хорошо, я соглашусь и награду, большое спасибо! – Matt

+0

уверен, дайте мне знать, если вы столкнетесь с другими проблемами. – Gaafar

+1

Единственная проблема, с которой я столкнулся, заключается в том, что я не могу установить «киоск: истина» в настройке или сразу после открытия окна. У меня есть 'setTimeout' достаточно долго, чтобы сначала его визуализировать, а затем выполнял' setKiosk (true); 'работает, иначе окно не останется прозрачным. – Matt