我正在使用JavaScript、node.js和Electron构建一个应用程序。
该应用程序的一部分旨在锁定计算机,直到用户进行身份验证。
虽然这能够实现,但我需要让我的应用程序禁用alt + tab键盘快捷键,因为当前用户可以使用此快捷方式跳过我的锁定页面(从而能够在未进行身份验证的情况下使用计算机)。
如果有任何建议,将不胜感激。
我正在使用JavaScript、node.js和Electron构建一个应用程序。
该应用程序的一部分旨在锁定计算机,直到用户进行身份验证。
虽然这能够实现,但我需要让我的应用程序禁用alt + tab键盘快捷键,因为当前用户可以使用此快捷方式跳过我的锁定页面(从而能够在未进行身份验证的情况下使用计算机)。
如果有任何建议,将不胜感激。
window.onbeforeunload
事件或在 close
事件中调用 event.preventDefault()
。
https://electron.atom.io/docs/api/browser-window/#event-close
好的,我遇到了同样的问题。记得在早期版本的electron中我们可以做到这一点而没有任何问题,但现在在新版本中却不起作用了,我不知道原因。在kiosk
模式下也无法工作,我们可以在Windows中使用Alt+Tab
来更换窗口,但在Mac OS上,kiosk
阻止所有Command+Tab
函数切换窗口。
所以在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
。
你看过 electronJS 上的 加速器 吗?我建议你查看一下它的文档,以及 Windows 快捷键文档。理论上,你可以将自定义函数映射到 alt + tab
命令序列中,然后只需 console.log
或 return;
来退出。关于这方面的讨论可以在 electron 论坛 中找到。
或者,你也可以像 @Toastrackenigma 提供的链接中所提到的那样修改注册表。有关此问题的讨论可以在 electron github 页面中找到。
无论哪种方法,我都建议你非常小心地进行操作,因为修改用户的快捷方式或注册表可能会对最终用户的操作系统造成问题。
ctrl
+alt
+delete
?这似乎不是一种安全的锁定计算机的方式。 - Toastrackenigmaalt
+f4
。这是类似Cryptolocker应用程序尝试执行的操作,因此即使您的应用程序是合法的,我认为您在某些情况下也不会有太多运气,因为操作系统旨在确保用户永远不会因恶意应用程序而被锁定。最好的情况是,您需要使用更低级别的解决方案,例如C语言,以实际覆盖操作系统 - 我不认为electron(仅将网页作为本机应用程序运行)具有此功能。 - Toastrackenigmactrl
+alt
+delete
。希望该页面上的一些代码能够解决您的alt
+tab
问题,然后您可能可以通过像该帖子底部的人所做的那样进行一些注册表操作来解决ctrl
+alt
+delete
问题 :D - Toastrackenigma