首页 > 其他分享 >electron如何与web对接

electron如何与web对接

时间:2023-08-28 11:57:37浏览次数:43  
标签:web ipcRenderer 对接 window send electron 窗体 true

mian.js

 
//创建主窗体
function createWindow(options) {
    // Create the browser window.
    mainWindow = new BrowserWindow({
        modal: true,
        fullscreen: false,
        autoHideMenuBar: true,
        titleBarStyle: "hidden",
        skipTaskbar: true,
        webPreferences: {
            // webSecurity: false,
            // allowRunningInsecureContent: true,
            nodeIntegration: true,
            contextIsolation: true,
            preload: path.join(__dirname, 'preload.js')
        },
        show: false
    })
    mainWindow.loadURL(url);
}
 
app.whenReady().then(() => {

    //防止程序多开
    const gotTheLock = app.requestSingleInstanceLock()
    if (!gotTheLock) {
        dialog.showMessageBoxSync({ message: "程序已经在运行", type: "warning", title: "提示" });
        app.quit()
    }

    registryShortcut(); //注册快捷键
    registryTray(); //注册系统托盘
    createMiniSizeWindow(); //创建最小化窗体
    createLodingWindow(); //创建加载窗体(包含自动更新)
    if (NODE_ENV === "development") {
        //createLoginWindow();
        createWindow();
    }

    app.on('activate', function () {
        // On macOS it's common to re-create a window in the app when the
        // dock icon is clicked and there are no other windows open.
        if (BrowserWindow.getAllWindows().length === 0) createLoginWindow()
    })
})
 
// 加载主窗体
ipcMain.on('loadMainWindow', function (res, args) {
    createWindow(args);
})

  

preload.js

const electron = require('electron')
const { ipcRenderer, contextBridge } = require('electron')

window.addEventListener('DOMContentLoaded', () => {
  //加载完成检查更新
  ipcRenderer.send("checkForUpdate");
})
//桥接网页内容
contextBridge.exposeInMainWorld('winApi', {
  //关闭窗口
  closeWindow: () => { ipcRenderer.send('handelClose') },
  //最小化窗口
  minimizeWindow: () => { ipcRenderer.send('handelMiniWindow') },
  //程序更新信息
  updateMessage: (callback) => ipcRenderer.on("updateMessage", callback),
  //下载进度
  downloadProgress: (callback) => ipcRenderer.on("downloadProgress", callback),
  //立即更新
  isUpdateNow: () => ipcRenderer.on("isUpdateNow", () => {
    ipcRenderer.send("isUpdateNow");
  }),
  //加载主窗体
  loadMainWindow: (options) => {
    ipcRenderer.send("loadMainWindow", options)
  },
  //显示主窗体
  showMainWindow: () => {
    ipcRenderer.send("showMainWindow")
  }
});

electron跟web端进程通信,主要是依靠桥接器,如上所示

electron加载以后会将winApi加入到js的window对象中,前端可以通过调用window对象上的winodw.winApi.minimizeWindow()方法,最小化主窗体等。

标签:web,ipcRenderer,对接,window,send,electron,窗体,true
From: https://www.cnblogs.com/wafulo/p/17661915.html

相关文章

  • 在SpringBoot中使用WebSocket
    一、概述最近在SpringBoot中用到了WebSocket的功能,在此记录一下使用步骤。SpringBoot使用WebSocket还是比较简单的,只需要4步就行了。如下二、使用步骤第一步:在pom.xml文件中导入坐标<!--websocketdependency--><dependency><grou......
  • Kubernetes 对接 GlusterFS 磁盘扩容实战
    前言知识点定级:入门级使用HeketiTopology扩容磁盘使用HeketiCLI扩容磁盘实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ks-master-0192.168.9.912450100KubeSphere/k8s-masterks-master-1192.1......
  • GolangWeb框架——Gin框架的使用
    Gin是一个轻量级、灵活和高性能的Web框架,基于Go语言开发。它提供了简洁的API设计和出色的性能,使得构建Web应用程序变得更加简单和高效。本文将介绍如何使用Gin框架来快速构建Web应用程序,并展示其主要特性和用法。本文将介绍关于Gin的基本使用方法,包括基本的请求处理与发送响应。G......
  • 5个前端开源项目带你在Web上体验Windows
    本文来分享五个yyds的开源项目,这些项目把Windows带到了Web平台上。让我们一起感受这些项目带来的回忆和创新,重温Windows93、98、XP和7的经典界面,甚至探索现代概念中的Windows11和12!Windows12使用JavaScript、CSS、HTML等技术开发的网页版Windows12,且支持深......
  • vs的web调试以127.0.0.1启动
     VS以127.0.0.1调试步骤_SuperMan25的博客-CSDN博客默认以localhost启动,无法接收127.0.0.1 1.管理员启动vs2.邮件单击项目-》属性更改项目启动路径为127.0.0.13.打开项目所在文件找到这个config4.更改其对应端口启动地址为127.0.0.1 ......
  • 【web_逆向13】ob混淆及实战
    什么是ob混淆?OB混淆和变量名混淆是常用的代码混淆技术。OB混淆是指在代码中添加一些无用的代码和函数,以增加代码的复杂度和难以理解性,从而增加代码的保护性。变量名混淆是指将变量名替换为无意义的字符串,增加代码的难度和防止代码的逆向分析。ob混淆的特点它会把常规的......
  • Weblogic远程代码执行漏洞CVE-2023-21839
    漏洞简介Oracle发布安全公告,修复了一个存在于WebLogicCore中的远程代码执行漏洞(CVE-2023-21839),可在未经身份验证的情况下通过T3、IIOP协议远程访问并破坏易受攻击的WebLogicServer,成功利用该漏洞可能导致未授权访问和敏感信息泄露。影响版本OracleWeblogicServer12.2.1.3.......
  • WEB项目概述和环境搭建
    第1章项目概述和环境搭建前言为了巩固web基础知识,提高综合运用能力。故在此章节我们将做了一个在线教育系统,要求每一位同学都能独立完成此案例1.项目概况1.1项目概述软件开发流程项目开发角色​参考PPT1.2项目需求优学管理系统是一款专门针对培训机构定制开发的......
  • Stable Diffusion Web UI页面CCS无效问题
    安装后进入http://127.0.0.1:7860,StableDiffusionWebUI页面CCS好像没有加载成功,显示如下: 最后发现,在webui-user.bat加入share参数后,页面正常了setCOMMANDLINE_ARGS=--share ......
  • Stable diffusion webui炼指定的人物模型
    Stablediffusionwebui炼指定的人物模型1.打开自己的sd服务:修改自己的设置我本地的:http://192.168.1.4:7862/?__theme=dark修改设置--->训练:这个推荐勾上,会屏蔽vae文件,不然的话会出现很多问题反推提示词这里,不要勾选按字母排序了,取消勾选deepbooru上面的值选大过滤的标......