66 lines
1.6 KiB
JavaScript
66 lines
1.6 KiB
JavaScript
const { app, BrowserWindow } = require('electron')
|
||
const path = require('path')
|
||
|
||
console.log('=== 简单单实例测试 ===')
|
||
|
||
// 单实例检查
|
||
const gotTheLock = app.requestSingleInstanceLock()
|
||
|
||
if (!gotTheLock) {
|
||
console.log('❌ 检测到已有实例运行,退出当前实例')
|
||
app.quit()
|
||
} else {
|
||
console.log('✅ 这是第一个实例,继续启动')
|
||
|
||
let mainWindow = null
|
||
|
||
// 监听第二个实例
|
||
app.on('second-instance', (event, commandLine, workingDirectory) => {
|
||
console.log('检测到第二个实例启动,激活现有实例')
|
||
if (mainWindow) {
|
||
if (mainWindow.isMinimized()) {
|
||
mainWindow.restore()
|
||
}
|
||
mainWindow.show()
|
||
mainWindow.focus()
|
||
}
|
||
})
|
||
|
||
// 创建窗口
|
||
function createWindow() {
|
||
mainWindow = new BrowserWindow({
|
||
width: 800,
|
||
height: 600,
|
||
webPreferences: {
|
||
nodeIntegration: true,
|
||
contextIsolation: false
|
||
}
|
||
})
|
||
|
||
mainWindow.loadURL('data:text/html,<h1>单实例测试</h1><p>PID: ' + process.pid + '</p><p>时间: ' + new Date().toLocaleString() + '</p>')
|
||
|
||
console.log('窗口已创建,PID:', process.pid)
|
||
|
||
mainWindow.on('closed', () => {
|
||
mainWindow = null
|
||
})
|
||
}
|
||
|
||
app.whenReady().then(() => {
|
||
console.log('应用已准备就绪')
|
||
createWindow()
|
||
})
|
||
|
||
app.on('window-all-closed', () => {
|
||
console.log('所有窗口已关闭')
|
||
if (process.platform !== 'darwin') {
|
||
app.quit()
|
||
}
|
||
})
|
||
|
||
app.on('activate', () => {
|
||
if (BrowserWindow.getAllWindows().length === 0) {
|
||
createWindow()
|
||
}
|
||
})
|
||
}
|