You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows系统下如何让Electron窗口始终置顶 覆盖全屏运行的游戏及应用

Electron Windows平台全屏游戏上层悬浮层实现方案

问题根因

你调用的常规setAlwaysOnTop API只能调整常规窗口的层级,Windows下独占全屏模式的游戏会直接接管显卡的排他输出通道,优先级远高于普通顶层窗口,所以不管你设置什么level参数都会被遮挡。你看到的Discord overlay不是靠原生窗口层级实现的,而是搭配了底层渲染钩子。

可行解决方案

方案1:纯Electron API适配(仅适用于无边框/窗口化游戏)

如果可以引导用户使用游戏的无边框窗口模式,只需要调整窗口配置即可实现稳定顶层显示,修改代码如下:

  1. 新增BrowserWindow初始化参数
const mainWindow = new BrowserWindow({
  width: 800,
  height: 600,
  frame: false, // 无边框
  transparent: true, // 适配悬浮层透明需求
  skipTaskbar: true, // 不占用任务栏空间
  focusable: false, // 避免抢占游戏焦点
  alwaysOnTop: true,
  // Windows专属配置
  type: 'toolbar'
});
  1. 调整setAlwaysOnTop调用参数,Windows下最高层级的level为screen-saver,搭配层级偏移值提升优先级:
mainWindow.setAlwaysOnTop(true, 'screen-saver', 1);
  1. 新增定时层级刷新,避免游戏窗口刷新时把你的窗口挤到下层,不要调用focus避免抢焦点:
setInterval(() => {
  if (mainWindow.isVisible()) {
    mainWindow.moveTop();
  }
}, 300);

方案2:渲染钩子注入(兼容独占全屏游戏)

如果必须支持独占全屏模式的游戏,需要使用进程注入的方式拦截游戏的DirectX/OpenGL渲染调用,把你的Electron界面纹理渲染到游戏的渲染管线中。可以使用社区封装好的原生插件实现该能力,不需要自行开发底层钩子逻辑,配置门槛很低。

注意:该方案涉及进程注入,可能会被游戏的反作弊系统判定为异常程序,公开分发前需要提前适配目标游戏的反作弊规则。

额外说明

英雄联盟的全屏模式为排他独占模式,纯Electron API无法实现顶层悬浮,要么引导用户切换到无边框窗口模式,要么使用注入钩子方案。

内容的提问来源于stack exchange,提问作者QarthO

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 22:06:04