From b5e123281f226d6d191ca161aa331b1c2064f6a1 Mon Sep 17 00:00:00 2001
From: chenyc <501753378@qq.com>
Date: 星期二, 21 十月 2025 16:02:26 +0800
Subject: [PATCH] 添加界面参数
---
electron/main/index.ts | 121 +++++++++++++++++++++++++++++++---------
1 files changed, 94 insertions(+), 27 deletions(-)
diff --git a/electron/main/index.ts b/electron/main/index.ts
index f68297a..49f13d8 100644
--- a/electron/main/index.ts
+++ b/electron/main/index.ts
@@ -1,19 +1,44 @@
-import { app, BrowserWindow, shell, ipcMain } from 'electron'
+import { app, BrowserWindow, shell, ipcMain,Menu, IpcMainEvent } from 'electron'
import { release } from 'os'
import { join } from 'path'
-import fs from 'fs'
-import iconv from 'iconv-lite'
+import logger from '../preload/logger.js'
+//koa----
+import Koa from 'koa';
+import Router from 'koa-router';
+import { checkUpdate } from './appVersion.js';
+const koaBody = require('koa-body');
+const creatorKoa=(win)=>{
+ const app = new Koa();
+ const router = new Router();
+ app.use(koaBody({
+ multipart: true
+ }));
+
+ router.get('/', async (ctx) => {
+ ctx.body = 'Hello World!';
+ });
+ router.post('/postResult', async (ctx)=>{
+ const body=ctx.request.body
+ win?.webContents.send('message-koa',body)
+ ctx.body={
+ "code": 200,
+ "data": body,
+ "message": "接收成功"
+ }
+ })
+
+ app.use(router.routes());
+
+ app.listen(3131,()=>{
+ console.log('koa Service start, port:3131')
+ });
+}
// 配制文件的读写实例
const Store = require('electron-store');
const store = new Store();
console.log(store.path)
-// 读
-// console.log(store.get('clientCode'))
-// console.log(store.get('deviceList'))
-// 写
-// store.set("testr","test001")
// Disable GPU Acceleration for Windows 7
if (release().startsWith('6.1')) app.disableHardwareAcceleration()
@@ -34,8 +59,16 @@
const url = `http://${process.env['VITE_DEV_SERVER_HOST']}:${process.env['VITE_DEV_SERVER_PORT']}`
async function createWindow() {
+
win = new BrowserWindow({
title: 'Main window',
+ transparent: true,
+ frame:store.get('debug')===undefined?true:store.get('debug'),//关闭菜单栏
+ fullscreen: true,// 开启默认全屏
+ kiosk: true,
+ movable:false,// 关闭窗口移动
+
+ // autoHideMenuBar:store.get('debug'),
webPreferences: {
preload: splash,
nodeIntegration: true,
@@ -52,9 +85,10 @@
// Test active push message to Renderer-process
// 测试推送消息到Renderer进程
win.webContents.on('did-finish-load', () => {
- win?.webContents.send('main-process-message', new Date().toLocaleString())
- win?.webContents.send('getConfigData',store.get('clientCode'),store.get('devices'),store.path)
+ creatorKoa(win)
win?.webContents.send('getScreenTimeout',store.get('screenTimeout'))
+ win?.webContents.send('getPcName',store.get('machineName'))
+ win?.webContents.send('getConfigData',store.get(),store.path)
})
// Make all links open with the browser, not with the application
@@ -64,7 +98,6 @@
return { action: 'deny' }
})
}
-
app.whenReady().then(createWindow)
app.on('window-all-closed', () => {
@@ -72,13 +105,24 @@
if (process.platform !== 'darwin') app.quit()
})
+
+
+
app.on('second-instance', () => {
if (win) {
- // Focus on the main window if the user tried to open another
+ // 如果用户试图打开另一个窗口,则将焦点放在主窗口上
if (win.isMinimized()) win.restore()
win.focus()
}
})
+app.on('render-process-gone',(e,w,d)=>{
+ logger.info(`${new Date()}渲染进程被杀死${d.reason}\n`)
+ // 基于我在开发的程序本身的设定,此处重启应用就可以了
+ app.relaunch({args: process.argv.slice(1).concat(['--relaunch'])});
+ // 尝试关闭所有窗口
+ app.quit();
+})
+
app.on('activate', () => {
const allWindows = BrowserWindow.getAllWindows()
@@ -88,8 +132,12 @@
createWindow()
}
})
+// 自动更新
+// app.on('ready', async () => {
+// updater()
+// })
-// new window example arg: new windows url
+// 新窗口示例arg:新的Windows url
ipcMain.handle("open-win", (event, arg) => {
const childWindow = new BrowserWindow({
webPreferences: {
@@ -106,9 +154,40 @@
// childWindow.webContents.openDevTools({ mode: "undocked", activate: true })
}
})
+// 主进程处理日志定义
+ipcMain.handle('logger', async(event, arg) => { //与渲染进程通信
+ return new Promise((resolve, reject) => {
+ logger.info(arg)
+ })
+})
+/**
+* 版本更新检测
+*/
+ipcMain.handle("check-update",(e:any)=>{
+ // 获取发送通知的渲染进程窗口
+ const currentWin = getWindowByEvent(e);
+ // 升级校验
+ // checkUpdate(currentWin);
+});
+
+
+/**
+ * 通过窗口事件获取发送者的窗口
+ * @param event ipc发送窗口事件
+ */
+function getWindowByEvent(event: IpcMainEvent): BrowserWindow {
+ const webContentsId = event.sender.id;
+ for (const currentWin of BrowserWindow.getAllWindows()) {
+ if (currentWin.webContents.id === webContentsId) {
+ return currentWin;
+ }
+ }
+ return null;
+}
+
// 渲染端发送消息到主进程
-ipcMain.on("main-process-message2",()=>{
- console.log("33344")
+ipcMain.on("winClose",()=>{
+ win?.close()
})
// 渲染端发送消息到主进程修改confing文件
ipcMain.on('setConfingData', (event, arg) => {
@@ -117,17 +196,5 @@
"clientCode": arg.clientCode,
"machineName": arg.machineName,
"screenTimeout": arg.screenTimeout,
- "devices":arg.devices
}
- //对比两端配置文件
- if(JSON.stringify(mode1)!=JSON.stringify(mode2)){
- //更新cofing.json
- console.log('update confing.json')
- store.set(mode2)
- // 重新建立sockte 通讯
- win?.webContents.send('getConfigData',store.get('clientCode'),store.get('devices'),store.path)
- win?.webContents.send('getScreenTimeout',store.get('screenTimeout'))
- }
-
-
})
\ No newline at end of file
--
Gitblit v1.8.0