Electron / Node.js如何查找第三方应用程序窗口的位置 - 另一个应用程序的覆盖层

4

使用Electron/Node,能否查找第三方应用程序窗口的大小和位置?

我想为一个游戏编写一个叠加层,并根据游戏窗口在特定位置上方放置我的Electron窗口。


1
也许尝试集成像这个Python脚本或者至少是C/C++插件?因为似乎NodeJS没有这个功能。 - G07cha
针对哪些操作系统?例如在Windows中,您可以使用node-ffi来利用Win32 API获取此类信息,但我不确定在OSX或Linux中如何实现。 - Shawn Rakowski
当然,适用于Windows和macOS :) - Mick
1个回答

0

可以使用electron-overlay-window package实现。

支持:

  • Windows(7-10)
  • Linux(X11)

它通过标题跟踪目标窗口,并将您的应用程序窗口放在其上方。如果重新启动目标应用程序/游戏,它还会重新附加自己。唯一的缺点是它没有很好的文档说明。但是,如果您有任何与电子相关的经验,基本演示非常简单。

请注意 - 它仅适用于窗口化或无边框窗口化模式。电子窗口无法放置在全屏游戏上方。


// ...
import { overlayWindow as OW } from 'electron-overlay-window'

// ...
const win = new BrowserWindow({
  ...OW.WINDOW_OPTS,
  width: 800,
  height: 600,
  resizable: false,
  webPreferences: {
    nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION,
  },
})

// ... when ready
OW.attachTo(window, 'Untitled - Notepad')

// listen for lifecycle events
OW.on('attach', ev => { console.log('WO: attach', ev) })
OW.on('detach', ev => { console.log('WO: detach', ev) })
OW.on('blur', ev => { console.log('WO: blur', ev)})
OW.on('focus', ev => { console.log('WO: focus', ev)})
OW.on('fullscreen', ev => console.log('WO: fullscreen', ev))
OW.on('moveresize', ev => console.log('WO: fullscreen', ev))

您可以在此处查看更多示例:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接