1 Star 0 Fork 1

crism/crism-proxy

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
main.js 3.59 KB
一键复制 编辑 原始数据 按行查看 历史
crism 提交于 2021-04-02 16:25 +08:00 . refactor: code
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()
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/crism/crism-proxy.git
git@gitee.com:crism/crism-proxy.git
crism
crism-proxy
crism-proxy
dev

搜索帮助