禁用 Electron 应用程序中的键盘快捷键 Alt + Tab

4

我正在使用JavaScript、node.js和Electron构建一个应用程序。

该应用程序的一部分旨在锁定计算机,直到用户进行身份验证。

虽然这能够实现,但我需要让我的应用程序禁用alt + tab键盘快捷键,因为当前用户可以使用此快捷方式跳过我的锁定页面(从而能够在未进行身份验证的情况下使用计算机)。

如果有任何建议,将不胜感激。


其他键盘快捷键呢,例如 ctrl+alt+delete?这似乎不是一种安全的锁定计算机的方式。 - Toastrackenigma
好的,我真的想禁用所有的键盘快捷键,只是以Alt + Tab为例,因为它是目前给我带来问题的一个。 - Javi Palacios
另一个快捷键是alt+f4。这是类似Cryptolocker应用程序尝试执行的操作,因此即使您的应用程序是合法的,我认为您在某些情况下也不会有太多运气,因为操作系统旨在确保用户永远不会因恶意应用程序而被锁定。最好的情况是,您需要使用更低级别的解决方案,例如C语言,以实际覆盖操作系统 - 我不认为electron(仅将网页作为本机应用程序运行)具有此功能。 - Toastrackenigma
https://github.com/electron/electron/issues/2156 - 在那里,无法捕获 ctrl+alt+delete。希望该页面上的一些代码能够解决您的 alt+tab 问题,然后您可能可以通过像该帖子底部的人所做的那样进行一些注册表操作来解决 ctrl+alt+delete 问题 :D - Toastrackenigma
3个回答

2
你可以为窗口打开信息亭模式,使其全屏并始终置顶,这样你就无法切换到其他应用程序。
你还可以将窗口设置为透明,并将登录框位于屏幕中央,以便它看起来像是屏幕中央有一个窗口,但你无法点击屏幕上的其他区域。
要处理 Alt+F4,你可以使用 window.onbeforeunload 事件或在 close 事件中调用 event.preventDefault()

https://electron.atom.io/docs/api/browser-window/#event-close


1

好的,我遇到了同样的问题。记得在早期版本的electron中我们可以做到这一点而没有任何问题,但现在在新版本中却不起作用了,我不知道原因。在kiosk模式下也无法工作,我们可以在Windows中使用Alt+Tab来更换窗口,但在Mac OS上,kiosk阻止所有Command+Tab函数切换窗口。

KiosK

所以在Windows中,我使用了另一种解决方法。我编写了一个Python代码,并将其编译成exe文件,然后每当我想要阻止用户使用Alt+Tab时,我都会使用node命令运行该脚本。

  function execute() {
    var exePath =process.platform === "win32"? path.resolve(__dirname, './runner.exe'):null;
    runner = child.execFile(exePath, function(error, stdout, stderr){
      
      if (error !== null) {
        runner.kill('SIGKILL');
          
      }
    });
 
};

在应用关闭时结束任务
if (process.platform !== 'darwin') {
    
    child.exec(`taskkill -F -T -PID ${runner.pid}`);
    kill(runner.pid, 'SIGKILL',(err)=>{

      app.quit();
    });
   

  }

Python 代码

import keyboard

keyboard.add_hotkey("alt + tab", lambda: None, suppress =True)
keyboard.wait()

这就是我的做法:在Mac或Linux上,我使用kiosk;而在Windows上,我运行我的可执行文件,它会屏蔽Alt+Tab


0

你看过 electronJS 上的 加速器 吗?我建议你查看一下它的文档,以及 Windows 快捷键文档。理论上,你可以将自定义函数映射到 alt + tab 命令序列中,然后只需 console.logreturn; 来退出。关于这方面的讨论可以在 electron 论坛 中找到。

或者,你也可以像 @Toastrackenigma 提供的链接中所提到的那样修改注册表。有关此问题的讨论可以在 electron github 页面中找到。

无论哪种方法,我都建议你非常小心地进行操作,因为修改用户的快捷方式或注册表可能会对最终用户的操作系统造成问题。


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