2016-06-08 4 views
0

내 응용 프로그램이 전체 화면 게임의 오버레이 (alwaysOnTop)이고 사용자가 오버레이를 클릭하면 포커스를 받으면서 게임 상단에 작업 표시 줄을 표시합니다. 초점을 맞추는 것은 좋지만 작업 표시 줄을 표시 할 수는 없습니다.전자 BrowserWindow는 포커스가 맞춰지면 작업 표시 줄을 표시합니다.

IT는 BrowserWindow docs 말한다 :

에 집중 할 수없는

되지 도구 상자 창이가 집중 될 수있는 창을 만들 수 있습니다 암시.

도구 상자 창을 만드는 방법을 알고 있거나 단순히 전자 창을 클릭 할 때 작업 표시 줄이 나타나지 않도록하십시오.


나는 setAlwaysOnTopskipTaskbar을 시도했습니다 언급해야한다. 나는 또한 transparent: trueframe: false입니다.


내가 만든 오버레이는 "Safelane, Midlane, Offlane"버튼입니다. 작업 표시 줄이 나타납니다 인터페이스를 클릭 한 후

enter image description here

:이 같은이 전체 화면 응용 프로그램의 상단에 표시하는 응용 프로그램 (도타 2)를 실행합니다. 최초의 화상 - 같은 머물 나는 경험을하고 싶은

enter image description here

: 그것은 전체 화면 응용 프로그램 (DOTA)이 포커스를 잃을 것을 잘 될 것이다, 작업 표시 줄은 경험의 연속성을 파괴하는 상단에 나타납니다 - 사용자가 내 오버레이에서 아무 것도 클릭하지 않으면 작업 표시 줄이 표시되지 않아야합니다.

Electron GitHub Issue


추가 솔루션 정보 - 그것은 투명하게 렌더링 할 수 있도록하지 않는 것 설정에서 kiosk: true 설정

아래 Gaafar의 솔루션을 사용 후. 창을 연 후 setTimeout 내에 setKiosk(true)을 사용하면 작동하는 것처럼 보입니다.

투명도가있는 kiosk 또는 fullscreen을 사용하는 모든 창에서 렌더링 문제가 있음을 발견했습니다. 그것은 여러 번 자체의 상단에 렌더링하고 항목을 unrender 수 없습니다 (표시 : 없음 css 아무것도 없음). 이 문제를 해결 한 방법은 Electron Window Manager을 사용하여 하나의 kiosk 창이 하나도없고 HTML/CSS 인터페이스가있는 기타 키오스크가 아닌 창을 만드는 것입니다. 결과 :

  1. 모든 인터페이스는 마우스 및 키보드와 상호 작용할 수 있습니다.
  2. 전자는 규칙적으로 렌더링이 발생합니다.
  3. 아래의 전체 화면 응용 프로그램은 투명한 영역을 통해 입력을 수신합니다.
  4. 작업 표시 줄이 입력에 나타나지 않습니다.
+0

당신이 어떤 무슨 일이 일어나고 있는지의 스크린 샷과 무엇을 어떻게 할를 제공 할 수 있습니다 : 나를 위해 작동 해결책은 이러한 플래그 --enable-transparent-visuals --disable-gpu

문제 & 솔루션을 실행하는 것입니다? –

+0

완료. 내가 다른 것을 추가 할 수 있으면 알려줘. – Matt

답변

1

skipTaskbar: true은 작업 표시 줄에 앱 표시를 방지하기위한 것입니다.

작업 표시 줄이 모두 전체 화면 또는 키오스크 모드를 사용 숨기려면 대신

fullscreen: true 또는 kiosk: true

편집 : 전체 화면 또는 키오스크 모드는 윈도우의 투명도를 방지 열려있는 몇 가지 문제가 있습니다. https://github.com/electron/electron/issues/2170#issuecomment-145942717

+0

전 화면 모드가 투명 영역에서의 클릭을 방지 할 수 있다고 생각했지만 작동하는 것 같습니다. 만약 내가 그것을 완벽하게 구현할 수 있는지 그리고 모든 것이 잘된다면 받아 들일 것이고 수여 할 것입니다, 대단히 감사합니다! – Matt

+0

다른 문제가 발생하면 알려주세요 – Gaafar

+1

설치 프로그램에서 또는 창을 연 직후 'kiosk : true'를 설정할 수 없다는 유일한 문제가있었습니다. 'setTimeout'을 먼저 렌더링 한 다음'setKiosk (true);를 실행하면됩니다. 그렇지 않으면 윈도우가 투명하게 렌더링되지 않습니다. – Matt