Слияние кода завершено, страница обновится автоматически
const {app, BrowserWindow, Menu, Tray} = require('electron')
if(require('electron-squirrel-startup')) return;
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
let win
let tray = null;
function createWindow () {
// 创建浏览器窗口。
Menu.setApplicationMenu(null) //隐藏菜单
win = new BrowserWindow({width: 640, height: 480, resizable:false, maximizable:false, webPreferences: {webSecurity: false, nodeIntegration: true}, icon: __dirname + '/icon/icon-16.ico'})
// 然后加载应用的 index.html。
win.loadFile('web/index.html')
// 打开开发者工具
// win.webContents.openDevTools()
// 当 window 被关闭,这个事件会被触发。
win.on('closed', () => {
// 取消引用 window 对象,如果你的应用支持多窗口的话,
// 通常会把多个 window 对象存放在一个数组里s面,
// 与此同时,你应该删除相应的元素。
win = null
})
//创建系统通知区菜单,隐藏任务栏。
if (process.platform.indexOf("win") != -1) {
tray = new Tray(__dirname + '/icon/icon.png');
const contextMenu = Menu.buildFromTemplate([
{label: '退出', click: () => {win.destroy()}},//我们需要在这里有一个真正的退出(这里直接强制退出)
])
tray.setToolTip('断网守护')
tray.setContextMenu(contextMenu)
win.setSkipTaskbar(true);
tray.on('click', ()=>{ //我们这里模拟桌面程序点击通知区图标实现打开关闭应用的功能
win.isVisible() ? win.hide() : win.show();
})
}
}
// Electron 会在初始化后并准备
// 创建浏览器窗口时,调用这个函数。
// 部分 API 在 ready 事件触发后才能使用。
const gotTheLock = app.requestSingleInstanceLock();
if (!gotTheLock) {
// 如果获取失败,说明已经有实例在运行了,直接退出
app.quit();
}else{
app.on('second-instance', (event, commandLine, workingDirectory) => {
if(win){
if(win.isMinimized()) win.restore()
win.focus()
}
});
app.on('ready', createWindow)
}
// 当全部窗口关闭时退出。
app.on('window-all-closed', () => {
// 在 macOS 上,除非用户用 Cmd + Q 确定地退出,
// 否则绝大部分应用及其菜单栏会保持激活。
if (process.platform !== 'darwin') {
app.quit()
}
})
app.on('activate', () => {
// 在macOS上,当单击dock图标并且没有其他窗口打开时,
// 通常在应用程序中重新创建一个窗口。
if (win === null) {
createWindow()
}
})
const ipc = require('electron').ipcMain
const ip = require('ip');
const IPAddress = ip.address();
let reconnect_window;
ipc.on('open-reconnect-window', function (event,data) {
Menu.setApplicationMenu(null) //隐藏菜单
if(reconnect_window!=undefined){
reconnect_window.close();
}
reconnect_window = new BrowserWindow({width: 640, height: 480, resizable:false, maximizable:false, webPreferences: {webSecurity: false, nodeIntegration: false}, icon: __dirname + '/icon/icon-16.ico'})
// 打开开发者工具
// reconnect_window.webContents.openDevTools()
let account = data["account"];
let password = data["password"];
let contents = win.webContents
// 然后加载应用的 index.html。
reconnect_window.loadURL("https://passport.escience.cn/oauth2/authorize?response_type=code&redirect_uri=http://159.226.21.3:8088/zkylhs/callback&client_id=28321&theme=embed&state="+IPAddress, {"extraHeaders" : "pragma: no-cache\n"});
let never_login = true;
reconnect_window.webContents.on('dom-ready', () => {
if(never_login){
reconnect_window.webContents.executeJavaScript('document.getElementById("userName").value = "' + account + '";');
reconnect_window.webContents.executeJavaScript('document.getElementById("password").value = "' + password + '";');
reconnect_window.webContents.executeJavaScript('setTimeout(()=>{document.querySelectorAll("input[type=submit]")[0].click()},3000)');
}
never_login = false;
});
console.log(IPAddress);
// 当 window 被关闭,这个事件会被触发。
reconnect_window.on('closed', () => {
// 取消引用 window 对象,如果你的应用支持多窗口的话,
// 通常会把多个 window 对象存放在一个数组里面,
// 与此同时,你应该删除相应的元素。
reconnect_window = null
})
})
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )