如何在electron应用程序中将鼠标单击设置为全局快捷方式

如何在electron应用程序中将鼠标单击设置为全局快捷方式,electron,node-modules,Electron,Node Modules,当electron app在后台运行时,我想在鼠标的双击上触发一个动作。 我阅读了文档,似乎没有鼠标事件 还有其他方法可以做到这一点吗?也许是某个与electron app兼容的节点模块?我找到了这个很好的HTML代码解决方案 <script type = "text/javascript"> const {remote} = require('electron') const {Menu, MenuItem} = remote const menu

当electron app在后台运行时,我想在鼠标的双击上触发一个动作。
我阅读了文档,似乎没有鼠标事件


还有其他方法可以做到这一点吗?也许是某个与electron app兼容的节点模块?

我找到了这个很好的HTML代码解决方案

<script type = "text/javascript">
     const {remote} = require('electron')
     const {Menu, MenuItem} = remote

     const menu = new Menu()

     // Build menu one item at a time, unlike
     menu.append(new MenuItem ({
        label: 'MenuItem1',
        click() { 
           console.log('item 1 clicked')
        }
     }))

     menu.append(new MenuItem({type: 'separator'}))
     menu.append(new MenuItem({label: 'MenuItem2', type: 'checkbox', checked: true}))
     menu.append(new MenuItem ({
        label: 'MenuItem3',
        click() {
           console.log('item 3 clicked')
        }
     }))

     // Prevent default action of right click in chromium. Replace with our menu.
     window.addEventListener('contextmenu', (e) => {
        e.preventDefault()
        menu.popup(remote.getCurrentWindow())
     }, false)
  </script>

常量{remote}=require('electron')
const{Menu,MenuItem}=remote
常量菜单=新菜单()
//一次生成一个菜单项,不同于
菜单.附加(新菜单项)({
标签:“MenuItem1”,
单击(){
console.log('单击项目1')
}
}))
append(新的MenuItem({type:'separator'}))
追加(新菜单项({label:'MenuItem2',键入:'checkbox',选中:true}))
菜单.附加(新菜单项)({
标签:“MenuItem3”,
单击(){
console.log('单击项目3')
}
}))
//防止在chromium中单击鼠标右键的默认操作。替换为我们的菜单。
window.addEventListener('contextmenu',(e)=>{
e、 预防默认值()
menu.popup(remote.getCurrentWindow())
},错)
将此作为HTML正文中的第一项,它应该可以工作。至少它对我的项目起了作用


编辑,因为我忘了:第6条的答案归功于谷歌

我找到了这个很好的HTML代码解决方案

<script type = "text/javascript">
     const {remote} = require('electron')
     const {Menu, MenuItem} = remote

     const menu = new Menu()

     // Build menu one item at a time, unlike
     menu.append(new MenuItem ({
        label: 'MenuItem1',
        click() { 
           console.log('item 1 clicked')
        }
     }))

     menu.append(new MenuItem({type: 'separator'}))
     menu.append(new MenuItem({label: 'MenuItem2', type: 'checkbox', checked: true}))
     menu.append(new MenuItem ({
        label: 'MenuItem3',
        click() {
           console.log('item 3 clicked')
        }
     }))

     // Prevent default action of right click in chromium. Replace with our menu.
     window.addEventListener('contextmenu', (e) => {
        e.preventDefault()
        menu.popup(remote.getCurrentWindow())
     }, false)
  </script>

常量{remote}=require('electron')
const{Menu,MenuItem}=remote
常量菜单=新菜单()
//一次生成一个菜单项,不同于
菜单.附加(新菜单项)({
标签:“MenuItem1”,
单击(){
console.log('单击项目1')
}
}))
append(新的MenuItem({type:'separator'}))
追加(新菜单项({label:'MenuItem2',键入:'checkbox',选中:true}))
菜单.附加(新菜单项)({
标签:“MenuItem3”,
单击(){
console.log('单击项目3')
}
}))
//防止在chromium中单击鼠标右键的默认操作。替换为我们的菜单。
window.addEventListener('contextmenu',(e)=>{
e、 预防默认值()
menu.popup(remote.getCurrentWindow())
},错)
将此作为HTML正文中的第一项,它应该可以工作。至少它对我的项目起了作用


编辑,因为我忘了:第6条的答案要归功于谷歌

不幸的是,我们还不能做到这一点

正如MarshallOfSound对这一官方问题的评论


“globalShortcut会全局拦截按键组合,并阻止任何应用程序接收这些按键事件。如果您阻止应用程序接收鼠标按键,则所有应用程序都会很快崩溃不幸的是,我们还无法实现这一点

正如MarshallOfSound对这一官方问题的评论


“globalShortcut全局拦截密钥组合,并阻止任何应用程序接收这些密钥事件。如果你阻止应用程序接收鼠标按键,那么如果我的应用程序是在后台运行的,也就是说,当焦点在不同的应用程序上时,一切都会很快崩溃。我没有对此进行测试。所以你希望你的应用程序在后台运行,所以右键单击应该取代windows/linux/max内部上下文菜单?是的。。重新阅读这个问题,我很确定如果我的应用程序在后台运行,也就是说,当关注点在不同的应用程序上时,这个答案对它的工作没有帮助??我没有测试过。所以你希望你的应用程序在后台运行,所以右键单击应该取代windows/linux/max内部上下文菜单?是的。。重读这个问题,我确信这个答案不会有帮助