Javascript 如何禁用键盘快捷键Alt+;Windows 10上的electron应用程序中的选项卡?

Javascript 如何禁用键盘快捷键Alt+;Windows 10上的electron应用程序中的选项卡?,javascript,node.js,electron,Javascript,Node.js,Electron,我正在使用桌面应用程序,当我在Ubuntu服务器上工作时,我可以阻止键盘快捷键:Alt+Tab很好,但当我在Windows操作系统上工作并尝试阻止Alt+Tab时,它就不起作用了。最常见的问题是由于Alt键盘,当我试图阻止它时,它在Windows 10上无法正常工作 以下是我正在使用的代码: var shortcutsToCapture = ['Ctrl+Alt+Delete', 'Alt+F4','CommandOrControl+A','Super+Alt+Tab','CommandOrCo

我正在使用桌面应用程序,当我在Ubuntu服务器上工作时,我可以阻止键盘快捷键:Alt+Tab很好,但当我在Windows操作系统上工作并尝试阻止Alt+Tab时,它就不起作用了。最常见的问题是由于Alt键盘,当我试图阻止它时,它在Windows 10上无法正常工作 以下是我正在使用的代码:

var shortcutsToCapture = ['Ctrl+Alt+Delete', 'Alt+F4','CommandOrControl+A','Super+Alt+Tab','CommandOrControl+Shift+I', 'CommandOrControl+R']

// this should be placed at top of main.js to handle setup events quickly
if (handleSquirrelEvent(app)) {
    // squirrel event handled and app will exit in 1000ms, so don't do anything else
    return;
}

app.on('ready', function () {

  captureShortcuts(shortcutsToCapture)
})

function captureShortcuts(shortcuts) {
  shortcuts.forEach(function (shortcut) {
    registerShortcutCapturing(shortcut)
  })
}

function registerShortcutCapturing(shortcut) {
  var result = globalShortcut.register(shortcut, function () {
    console.log('<' + shortcut + '> captured!')
  })

  if (!result) {
    console.log('<' + shortcut + '> registration failed!')
  }
}

app.on('will-quit', () => {
  // Unregister a shortcut.
  globalShortcut.unregister('CommandOrControl+X')

  // Unregister all shortcuts.
  globalShortcut.unregisterAll()
})
var shortcutsToCapture=['Ctrl+Alt+Delete'、'Alt+F4'、'CommandOrControl+A'、'Super+Alt+Tab'、'CommandOrControl+Shift+I'、'CommandOrControl+R']
//这应该放在main.js的顶部,以快速处理安装事件
if(手柄要求相关(app)){
//squirrel事件已处理,应用程序将在1000毫秒后退出,所以不要做任何其他事情
返回;
}
app.on('ready',function(){
捕获快捷方式(shortcutsToCapture)
})
函数捕获快捷方式(快捷方式){
快捷方式。forEach(函数(快捷方式){
RegisterShortcutCapture(快捷方式)
})
}
功能寄存器端口捕获(快捷方式){
var result=globalShortcut.register(快捷方式,函数(){
console.log('captured!')
})
如果(!结果){
console.log('注册失败!')
}
}
app.on('will-quit',()=>{
//取消注册快捷方式。
globalShortcut.unregister('CommandOrControl+X')
//取消注册所有快捷方式。
globalShortcut.unregisterAll()文件
})
即使应用程序没有键盘焦点,也可以使用该模块检测键盘事件

const { app, globalShortcut } = require('electron')

app.on('ready', () => {
  globalShortcut.register('alt+tab', () => {

     return false
  })
})

希望这有帮助

您能解释一下为什么需要阻止用户切换到其他应用程序吗?我能想到的唯一使用案例涉及恶意软件的创建。@DragonThinks,因为我正在开发在线考试系统,所以为了防止学生作弊,我必须这样做。好的,这是一个很好的理由,谢谢。也许另一种尝试是检测窗口何时失去焦点?通过这种方式,您可以告诉用户不要切换窗口,否则他将无法通过测试。如果他还是这样做了,你会发现并让他失败。@Tom Doodler为什么不用?;)发布一个答案呢您好bro@siddharth shah,它告诉我们窗口不是定义的。@SophaSum我发现这个非常有用的包可以管理electronjs中的键盘事件。这将解决您的问题。我已经检查了这个链接,并测试了它仍然不起作用的代码。@SophaSum您需要在main.js文件中使用它。还需要为每个窗口注册。你所说的为每个窗口注册,我也将其添加到main.js中,但它不起作用。你能说得更具体些吗。