您如何获取有关其他应用程序 运行 或关注的信息?

How can you get information about other apps running or in focus?

我的动机:我正在编写一个应用程序来帮助进行一些量化的自我/时间跟踪类型的事情。我想用electron来记录我目前使用的是哪个app的信息。

有没有办法获取有关 Electron 中其他应用程序的信息?您至少可以提取有关当前具有焦点的另一个应用程序的信息吗?例如,如果用户正在 Chrome 中浏览网页,那么知道 A) 他们正在使用 chrome 和 B) 他们正在查看的网页的标题会很棒。

在我的研究过程中,我发现了这个问题: Which app has the focus when a global shortcut is triggered

看起来作者正在使用 nodObjc 库在 OSX 上获取此信息。除了其他人用来解决这个问题的任何方法之外,我特别好奇电子本身是否有任何方法可以在不求助于外部库的情况下公开这些信息。

不,Electron 不提供 API 来获取有关其他应用程序的信息。您需要直接访问本机平台 APIs 以获取该信息。例如 Tockler seems to do so via shell scripts, though personally I prefer accessing native APIs directly via native Node addons/modules or node-ffi-napi.

以有限的方式,是的,您可以使用 Electron 的 desktopCapturer.getSources() 方法获取其中的一些信息。

这不会获取机器上的每个程序 运行。这只会得到任何 chromium 认为是视频可捕获源的东西。这通常等同于任何具有 GUI window 的活动程序(例如,在 windows 的任务栏上)。

desktopCapturer.getSources({
  types: ['window', 'screen']
}, (error, sources) => {
  if (error) throw error
  for (let i = 0; i < sources.length; ++i) {
    log(sources[i]);
  }
});