defaultPath : "" , properties : [ "openFile" ] , // properties: ['openFile', 'multiSelections'], filters : [ { name : "Text" , extensions : [ "icode" ] } , { name : "Custom File Type" , extensions : [ "as" ] } , { name : "All Files" , extensions : [ "*" ] } . then ( result => { if ( ! result . canceled && result . filePaths . length > 0 ) { this . $emitNode ( "tradeMenu" , "open" , result . filePaths [ 0 ] ) ; // 监听主进程读完文件数据 this . $onNodeOnce ( "tradeMenuOpen" , ( event , arg ) => { let trade = openFormat ( result . filePaths [ 0 ] , arg ) ; this . newEditTrade ( trade ) ; } ) ; . catch ( err => { console . log ( err ) ; } ) ;

其中的$dialog,emitNode,onNodeOnce等待都是利用electron的,利用Vue进行封装的,result是选中文件的一系列数据

 		Vue.prototype.$onNodeOnce=function(channel, listener){
            ipcRenderer.once(channel, listener)
        // 监听主线程消息
        Vue.prototype.$onNode = function(channel,listener){
            ipcRenderer.on(channel, listener)
        // 文件弹框全局使用
        Vue.prototype.$dialog = dialog

2. 在桌面直接打开文件(.html),会自动打开软件,并读取文件, 或者将(.html)文件移动到程序图标上进行打开。

这个分两步,1.让程序能够代开文件,2.程序读取文件路径
"mac": {
      "icon": "./logo.icns",
      "fileAssociations": [
          "ext": [
            "icode"
      "target": [
          "target": "dmg"
    "dmg": {
      "title": "ICODE",
      "icon": "./logo.icns",
      "backgroundColor": "#ffffff",
      "contents": [
          "x": 192,
          "y": 344
          "x": 448,
          "y": 344,
          "type": "link",
          "path": "/Applications"

主要利用fileAssociations来注册程序打开后缀名。

	//主线程代码
	global.fileToOpen = "";
	app.on('open-file', (event, path) => {
    // 当用户想要在应用中打开一个文件时发出。 
    // 事件通常在应用已经打开,并且系统要再次使用该应用打开文件时发出。 
    // 也会在一个文件被拖到 dock 并且还没有运行的时候发出。 
   		event.preventDefault()
	    fileToOpen = path;
	    //win是打开的窗口,如果程序未启动则不会触发
	    //窗口打开后可通过渲染进程代码global来获取路径
	    if(win){
	        win.webContents.send("activateThenOpenFile",fileToOpen)
	});
	//渲染进程代码(路径得到就ok了)
	let currentFile = this.$electronRemote.getGlobal('fileToOpen') || null;

3. 程序已经启动,通过点击打开文件,进行打开

//参考2程序以及启动。主进程
if(win){
   win.webContents.send("activateThenOpenFile",fileToOpen)
// 渲染进程
// 程序启动后双击-----打开文件
 this.$onNode("activateThenOpenFile",(event,path)=>{
   if (__.isString(path) && /\.icode$/.test(path)) {
     this.$emitNode("tradeMenu", "open", path);
     //  监听主进程读完文件数据
     this.$onNodeOnce("tradeMenuOpen", (event, arg) => {
       let trade = openFormat(path, arg);
       this.newEditTrade(trade);
     });

4. 程序已经启动,通过移动文件到程序打开的页面,进行打开

这主要就要依赖原生拖拽

 // 拖拽进程序打开文件
    let drag = document.getElementById("drag")
    //此方法删除不行
    drag.addEventListener("dragover",  (e)=>{
      // 用来hack某些兼容性问题
        e.dataTransfer.dropEffect = "copy";
        e.stopPropagation();
        e.preventDefault();
    }, false);
    drag.addEventListener("drop",  (e)=>{
      e.preventDefault();
      e.stopPropagation();
      if(e.dataTransfer.files[0].path){
        let path = e.dataTransfer.files[0].path
        this.$emitNode("tradeMenu", "open", path);
        //  监听主进程读完文件数据
        this.$onNodeOnce("tradeMenuOpen", (event, arg) => {
          let trade = openFormat(path, arg);
          this.newEditTrade(trade);
        });
    }, false);

以上代码无法粘贴复制直接使用,但是能够提供方向,以及一些重要API方法。

1. 程序已经启动,通过点击打开文件,进行打开this.$dialog .showOpenDialog({ title: "打开文件", defaultPath: "", properties: ["openFile"], // properties: ['openFile', 'multiSelec... https://blog.csdn.net/lucky_fang/article/details/125264788 最近做了一个electron+vue的项目,需要实现类似QQ边缘自动隐藏的功能。 一开始想到的是通过页面的mouseout、mouseenter、mouseleave等方法实现,通过查找了很多资料,发现这几个方法只能实现一些比较简单的交互,局限性很大,难以实现鼠标hover显示,out就隐藏的效果。 后来发现通过监听鼠标在窗口的位置可以非常方便实现鼠标hover和out的判断,从而实现窗口自动隐现功能。
电子文件夹视图 我最初将其创建为nodejs应用程序以查看本地图像。 我对自己拥有的免费和付费图像应用程序感到沮丧-我需要一些东西来简单地显示文件夹中的图像。 有了许多可用于网络的出色图像处理库,我认为将某些东西放到节点上就足够简单了……然后,我发现了Electron的超赞之处! 这个程序可以让我快速添加功能来处理各种文件管理任务。 迫在眉睫的是能够快速查看媒体文件,而不会出现笨拙的小部件或ui chrome。 使用Electron,我可以在Windows可执行文件中使用Web技术创建具有自定义功能的通用目录浏览器! 这是一个正在进行的工作。 随意使用和修改。 主要目的是查看文件夹项目 项目功能:复制,剪贴板...,删除,浏览,文件夹大小,打开,移动,重命名,将图像设置为背景,零 网格中显示的项目 网格功能:隐藏项目,过滤器,文件夹,最后一个文件夹,顺序,缩放,滚动,随机播放,
使用Electron开发客户端时,经常会遇到需要打开某个文件或者某个文件夹的需求。比如做一个下载应用,选择默认下载路径的时候就需要有这个功能。再比如做一个播放器应用,选择打开某个视频文件的时候也需要类似的功能。 Electron中关于文件和文件夹操作的API模块是shell,它使用默认的应用程序管理文件和 URL。接下来介绍的方法都.. const shell = require('electron').shell; const path = require('path'); shell.openItem(path.join(__dirname, 'new.docx'));  备注:这种方式只是用来测试打开本地Office文件,如果应用正式打包之后,需通过注册表方式进行打...
Electron 中文文档,200多页。排版精美,值得收藏。 --------------------------------------------------- 本 PDF 基于开源文档,目录书签齐全。 版权归原作者,翻译版权归译者。