系统托盘中的MS WIndows上的Electron JS应用程序可以监听键盘事件并启动弹出窗口吗?

时间:2016-09-03 02:57:51

标签: javascript windows electron

我需要构建一个可以在MIcrosoft WIndows上运行的程序,它将是一个系统托盘应用程序。它需要坐在托盘中运行并听取键盘按下。按下映射键时,需要打开一个弹出式面板,列出并显示软件快捷方式,点击后将打开所选软件并关闭弹出窗口。

它基本上是一个应用程序启动器,它将显示一个软件列表,该列表取决于触发了哪个键盘键映射。例如,键盘映射1将在弹出窗口中显示添加到Image editing类别的软件快捷方式。另一个键会打开同一个窗口,但显示text editing的软件快捷方式,依此类推。

我是一名网络开发人员(PHP和JavaScript)。构建一个真正的Windows C ++或C#风格的应用程序是我的能力!

这就是允许使用网络语言(JS,HTML,CSS)构建跨平台桌面应用程序的 Electron 软件可能能够构建我需要的东西,并允许我自己做!

电子 - http://electron.atom.io/

所以Electron app需要:

  • 坐在托盘中,听取按键
  • 当检测到映射键时,需要打开一个弹出窗口,其中包含与该键关联的软件项类别
  • 点击弹出窗口中的软件时,需要打开该软件并关闭弹出窗口。
  • 如果没有点击任何软件并且屏幕上的任何其他位置点击,则需要关闭该弹出窗口。

然后还需要一个基本设置面板窗口

  • 为类别指定键盘快捷键
  • 添加/删除存储软件名称文件路径类别和可选图标或图片

问题

我现在的真正问题是。在Windows任务托盘中运行的Electron应用程序是否可以侦听密钥并且还能够打开和关闭弹出窗口?

下面的图片展示了弹出窗口的基本需求。这只是能够在没有主窗口打开或聚焦的情况下从托盘应用程序打开弹出窗口的问题

enter image description here

更新

我已确认系统托盘中的Electron应用程序可以使用globalShortcut监听键盘事件并启动窗口。

globalShortcut http://electron.atom.io/docs/api/global-shortcut/

  

当应用程序没有键盘时检测键盘事件   对焦。

我还不确定:

  • 从我的应用中打开其他程序快捷方式
  • 在选择失去焦点的项目或窗口时关闭弹出窗口

1 个答案:

答案 0 :(得分:2)

是的,你可以使用globalShortcut。但是globalShortcuts会在操作系统上发出keypress事件,所以如果你将快捷方式设置为CTRL + C,它将在你的应用程序上执行,并且不会默认“复制”。请记住这一点并仔细选择您的快捷方式。

其次,我不知道是否有确切的方法可以执行此操作,但您可以在nodejs上运行任何命令行命令,这样您就可以使用childProcess.execSync()在电子上运行任何app的exe。

您可以随时创建BrowserWindow并指定其位置和大小。当他们失去焦点时,请听他们的events关闭他们。<​​/ p>