Electron 使用 regedit 控制注册表(实现win文件右键菜单)

// 下载regedit依赖库
npm install regedit --save

// 引入regedit 
const regedit = require('regedit')

// 创建key
regedit.createKey("HKCR\\*\\shell\\xxx系统\\shell\\xxx操作",(err) => {
        if(err){
            console.error("出现错误",err);
            return ;
        }
        # 执行到该位置表示成功
})

// 添加Value
let val = {
    "HKCR\\*\\shell\\xxx系统\\shell\\xxx操作":{
        'Icon':{
            value:'D://xxxx/xxxx.exe', 
            type:'REG_EXPAND_SZ'
         },
         'MUIVerb':{
            value:"xxxx操作",
            type:"REG_SZ"
         }
    }
}
regedit.putValue(val,(err)=>{
        if(err){
           console.error("出现错误",err);
           return ;
        }
        # 执行到该位置表示成功
})

// 查询注册表
regedit.list(['HKCR\\*\\shell\\xxx系统\\shell\\xxx操作'], function(err, result) {
    if(err){
	    console.error('出现错误 list == > err',err)
	    return ;
    }
    # 执行到该位置表示成功 result 表示返回值
})

// 删除注册表 (使用regedit删除存在问题,使用win原生的bat脚本进行删除)
// 引入child_process依赖可以执行bat脚本也可以执行shell脚本(该组件下载regedit组件时会被一并下载也可以单独进行下载)
const child_process = require('child_process')

// 进行删除
let deleteReg = `REG DELETE HKCR\\*\\shell\\xxx系统\\shell\\xxx操作 /f`;
let ret = child_process.execSync(deleteReg); # 同步执行bat脚本,不报错表明删除成功


# 使用 Electron 开发PC端出现问题,欢迎评论留言讨论。


微笑的java

欢迎关注转发评论点赞沟通,让编码不在孤单。

首先需要安装一些依赖: ```bash npm install electron electron-context-menu vite vue@next vue-router@next @vue/compiler-sfc typescript tslib --save-dev ``` 然后在 `src` 目录下新建 `main.ts` 和 `renderer.ts` 两个文件。 `main.ts` 的内容如下: ```ts import { app, BrowserWindow, Menu } from 'electron'; import path from 'path'; import contextMenu from 'electron-context-menu'; // 创建窗口 function createWindow() { const win = new BrowserWindow({ width: 800, height: 600, webPreferences: { // 允许使用 node.js nodeIntegration: true, // 允许使用 Electron 的 remote 模块 enableRemoteModule: true, // 允许在渲染进程中使用上下文菜单 contextIsolation: false, }, }); // 加载页面 win.loadFile(path.join(__dirname, '../renderer/index.html')); // 打开开发者工具 win.webContents.openDevTools(); // 设置窗口菜单 const template = [ { label: '菜单1', submenu: [ { label: '子菜单1', click: () => { console.log('点击了子菜单1'); }, }, { label: '子菜单2', click: () => { console.log('点击了子菜单2'); }, }, ], }, { label: '菜单2', click: () => { console.log('点击了菜单2'); }, }, ]; const menu = Menu.buildFromTemplate(template); Menu.setApplicationMenu(menu); } // 当 Electron 初始化完成并准备好创建窗口时调用这个函数 app.whenReady().then(() => { // 注册上下文菜单 contextMenu({ window: BrowserWindow.getFocusedWindow(), showInspectElement: true, }); createWindow(); // 如果所有窗口都关闭了,退出应用 app.on('window-all-closed', () => { if (process.platform !== 'darwin') { app.quit(); } }); }); // 在 macOS 上,当单击 Dock 图标并且没有其他窗口打开时,重新创建一个窗口 app.on('activate', () => { if (BrowserWindow.getAllWindows().length === 0) { createWindow(); } }); ``` `renderer.ts` 的内容如下: ```ts import { createApp } from 'vue'; import App from './App.vue'; createApp(App).mount('#app'); ``` 接下来在 `src` 目录下新建 `index.html` 文件,并且在里面添加一个 `div` 元素,并且指定它的 `id` 为 `app`。同时在 `body` 元素下添加如下代码: ```html <script src="./renderer.js"></script> ``` 最后在 `package.json` 中添加如下脚本: ```json { "scripts": { "start": "vite", "build": "vite build", "electron": "electron ." } } ``` 现在可以运行 `npm run start` 来启动应用程序,然后运行 `npm run electron` 来启动 Electron 应用程序。现在你应该已经能够看到一个 Electron 窗口,并且它包含一个菜单。如果你右键单击窗口,你应该能够看到一个上下文菜单
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微笑的Java

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值