//首先引入下需要使用到的函数 let {ipcMain}= require('electron'); //监听窗口关闭请求 ipcMain.on('close_win', function (event, arg) { let win = BrowserWindow.fromId(event.sender.id);//其实这里可以使用三元运算符会代码量少点,但是要重新获取一次我觉得有点影响算力还不如创建临时变量 //如果没有找到窗口对象或者固定的构造函数的话则重新获取id if (!win || !win.isMaximized) { win = event.sender.getOwnerBrowserWindow(); if (!win) return event.returnValue = false;//还没找到让询问的窗口死了这条心吧好像是没失败过但是作为个人开发者总得想想不一样的 win = BrowserWindow.fromId(win.id); } //此时的win是ipc请求窗口的BrowserWindow对象,好家伙又一个对象,而我却new不到自己的对象 win.close();//关闭窗口,但是这个是可以被网页阻止的,也可以监听得到然后比如储存下当前数据 win.destroy();//同上但是这个是强制关闭的 }
就这个破东西我找了几个月,求助了N多大佬,说多了都是泪直到现在还是保持在能用就行
// 这个其实是最好弄得,因为左键就可以做到,或者复制x,y位置的图片详细见:https://www.electronjs.org/docs/api/menu https://www.electronjs.org/docs/api/menu-item https://www.electronjs.org/docs/api/web-contents 写完这片文章还得继续敲代码来着不详细讲解可以私聊我问详细方法 {label: "复制图片",click:(a,b,c)=>{let id=b.id;BrowserWindow.fromId(id).webContents.copyImageAt(clickEven.x, clickEven.y)},visible:false,enabled:true},
//获取剪贴板文件位置 坑还在,就是没办法获取多个文件的位置 let clipboard = require('electron').clipboard; Mac: let filePath = clipboard.read('public.file-url').replace('file://', ''); Win: const rawFilePath = clipboard.readBuffer('FileNameW').toString('ucs2'); let filePath = rawFilePath.replace(new RegExp(String.fromCharCode(0), 'g'), ''); //一句就是 let Filepath= clipboard.readBuffer('FileNameW').toString('ucs2').replace(new RegExp(String.fromCharCode(0), 'g'), '');
重点来了复制文件
//这个是开源项目一个复制文件到剪贴板的小C#插件 方案是调用命令行,但是杀毒软件老误报,虽然火绒一直很安静但是一看同事电脑,真好气哦,天天说我软件有问题,读写下文件也拦截,气死掉掉了,珍爱生命远离那些天天知道打广告然后又整天装腔作势的杀软,这敏感那敏感的 window.file2clip = path.join(apppath, '..', '..', 'file2clip.exe');//插件位置 [下载链接]('https://kiic.oss-cn-beijing.aliyuncs.com/file2clip.exe') 详情请看开源项目:https://github.com/rostok/file2clip Copy_Path = (path) => { const { exec } = require('child_process'); exec(`powershell.exe -ExecutionPolicy Bypass Start-Process -NoNewWindow -FilePath ${file2clip} -ArgumentList "${path}"`, function (error, stdout, stderr) { if (error) { console.error(error); } else { console.log("success"); } }); } //复制单文件: Copy_Path('F://这个文件夹要复制') //肥肠的比德弗 简单明了高性能
//复制多文件: Copy_Path('{"F://这个文件夹要复制" "F://这个文件说我也要.jpg" "F://这个文件说带我一个.psd" "F://这个文件说我也是.js"}') 看懂了么他的数组结构是{}然后空格区分文件位置文件路径加双引号 但是这里还是有个坑 文件路径带空格啥的会出错,就等大佬解答了 //肥肠的比德弗 简单明了高性能