chenyc
2022-07-08 dc7afd089a74edf6a9e50d0eb3e0607d09e72548
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
import { app, BrowserWindow, shell, ipcMain } from 'electron'
import { release } from 'os'
import { join } from 'path'
import fs from 'fs'
import iconv from 'iconv-lite'
 
// 配制文件的读写实例
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()
 
// Set application name for Windows 10+ notifications
if (process.platform === 'win32') app.setAppUserModelId(app.getName())
 
if (!app.requestSingleInstanceLock()) {
  app.quit()
  process.exit(0)
}
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = 'true'
 
let win: BrowserWindow | null = null
// Here, you can also use other preload
const splash = join(__dirname, '../preload/splash.js')
// 🚧 Use ['ENV_NAME'] avoid vite:define plugin
const url = `http://${process.env['VITE_DEV_SERVER_HOST']}:${process.env['VITE_DEV_SERVER_PORT']}`
 
async function createWindow() {
  win = new BrowserWindow({
    title: 'Main window',
    webPreferences: {
      preload: splash,
      nodeIntegration: true,
      contextIsolation: false,
    },
  })
 
  if (app.isPackaged) {
    win.loadFile(join(__dirname, '../../index.html'))
  } else {
    win.loadURL(url)
  }
 
  // 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)
    win?.webContents.send('getScreenTimeout',store.get('screenTimeout'))
  })
 
  // Make all links open with the browser, not with the application
  // 用浏览器打开所有链接,而不是应用程序
  win.webContents.setWindowOpenHandler(({ url }) => {
    if (url.startsWith('https:')) shell.openExternal(url)
    return { action: 'deny' }
  })
}
 
app.whenReady().then(createWindow)
 
app.on('window-all-closed', () => {
  win = null
  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('activate', () => {
  const allWindows = BrowserWindow.getAllWindows()
  if (allWindows.length) {
    allWindows[0].focus()
  } else {
    createWindow()
  }
})
 
// new window example arg: new windows url
ipcMain.handle("open-win", (event, arg) => {
  const childWindow = new BrowserWindow({
    webPreferences: {
      preload: splash,
    },
  })
 
  if (app.isPackaged) {
    childWindow.loadFile(join(__dirname, `../renderer/index.html`), {
      hash: `${arg}`,
    })
  } else {
    childWindow.loadURL(`${url}/#${arg}`)
    // childWindow.webContents.openDevTools({ mode: "undocked", activate: true })
  }
})
// 渲染端发送消息到主进程
ipcMain.on("main-process-message2",()=>{
  console.log("33344")
})
// 渲染端发送消息到主进程修改confing文件
ipcMain.on('setConfingData', (event, arg) => {
  const mode1=store.store
  const mode2={
    "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'))
  }
  
  
})