代码拉取完成,页面将自动刷新
const { app, BrowserWindow, Menu, Tray, ipcMain } = require('electron')
const exec = require('child_process').exec
const path = require('path')
let win = null
let appTray = null
let npcProcess = null // npc进程名称
function runNpc(server, vkey) {
// 任何你期望执行的cmd命令,ls都可以
let npcCmd = './npc -server=127.0.0.1:7103 -vkey=hdsuai'
// let npcCmd = './npc -server=106.54.120.243:8024 -vkey=tgtzitivwl3jdidv'
let npcPath = path.join(__dirname, 'app')
// 执行命令行,如果命令不需要路径,或就是项目根目录,则不需要cwd参数: {}
npcProcess = exec(npcCmd, { cwd: npcPath })
// 打印正常的后台可执行程序输出
npcProcess.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
// 打印错误的后台可执行程序输出
npcProcess.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
// 退出之后的输出
npcProcess.on('close', function (code) {
console.log('out code:' + code);
})
}
function createWindow() {
win = new BrowserWindow({
width: 800,
height: 600,
frame: false,
resizable: false,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
nodeIntegration: true,
contextIsolation: false,
enableRemoteModule: true
}
})
win.loadFile('index.html')
win.webContents.openDevTools()
fn_tray()
}
function fn_tray() {
let trayMenuTemplate = [{
label: '- 隐藏',
click: () => {
win.hide()
}
},{
label: 'x 退出',
click: () => {
app_exit()
}
}]
// 设置系统托盘图标
let iconPath = path.join(__dirname, 'app/img/tray.png')
appTray = new Tray(iconPath)
// 托盘图标的上下文菜单
const contextMenu = Menu.buildFromTemplate(trayMenuTemplate)
// 隐藏任务栏菜单
// Menu.setApplicationMenu(Menu.buildFromTemplate([]))
// 设置托盘悬浮提示
appTray.setToolTip('crism proxy')
// 设置托盘菜单
appTray.setContextMenu(contextMenu)
// 单击托盘小图标显示应用
appTray.on('click', function(){
// 显示主程序
setTimeout(()=>{
win.show()
}, 50)
// 关闭托盘显示
// appTray.destroy()
})
}
app.whenReady().then(() => {
// 通过调用 createWindow方法,在 electron app 第一次被初始化时创建了一个新的窗口。
createWindow()
// 添加一个新的侦听器,只有当应用程序激活后没有可见窗口时,才能创建新的浏览器窗口。 例如,在首次启动应用程序后或重启运行中的应用程序。
app.on('activate', () => {
if (BrowserWindow.getAllWindows().length === 0) {
createWindow()
} else {
win.show()
}
})
runNpc() // 启动的时候运行NPC客户端
})
// 添加了一个新的侦听器,当应用程序不再有任何打开窗口时试图退出。 由于操作系统的 窗口管理行为 ,此监听器在 macOS 上是禁止操作的
app.on('window-all-closed', () => {
if (process.platform !== 'darwin') {
app_exit()
}
})
/* 最小化 */
ipcMain.on('min', e => {
// 隐藏主窗口
win.hide()
// 最小化主窗口
// win.minimize()
})
/* 退出 */
ipcMain.on('quit', e => {
app_exit()
})
function app_exit() {
if (npcProcess) {
console.log('-------------------- 关闭npc进程 --------------------')
npcProcess.kill()
}
app.quit()
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。