electron的中文文檔的地址:html
http://www.kancloud.cn/wizardforcel/electron-doc/137791
1.如何建立窗口和改變窗口:前端
import { BrowserWindow, globalShortcut, Menu } from 'electron' import Common from '../common/common.js' const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:${require('../../../../config').port}` : `file://${__dirname}/index.html` function createWindow() { var mainWindow = new BrowserWindow({ height: Common.WINDOW_SIZE_LOGIN.height, width: Common.WINDOW_SIZE_LOGIN.width, resizable: false, frame: false, }); mainWindow.loadURL(winURL); mainWindow.on('closed', () => { mainWindow = null }); //前期爲了調試方面,默認打開控制檯 mainWindow.webContents.openDevTools({ detach: true }); //註冊打開控制檯的快捷鍵 globalShortcut.register('ctrl+shift+alt+e', function () { let win = BrowserWindow.getFocusedWindow(); if (win) { win.webContents.openDevTools({ detach: true }); } }); //去掉默認菜單欄 Menu.setApplicationMenu(null); // eslint-disable-next-line no-console console.log('mainWindow opened'); //添加這段代碼 BrowserWindow.mainWindow = mainWindow; return mainWindow; } module.exports = { createWindow };
如何把electron的按鈕的最大化,最小化 關閉窗口改變;web
/** * Created by Administrator on 2017/4/26. * 頁面對窗口的一些操做封裝,用於渲染進程 */ "use strict"; const Common = require('../common/common.js'); const { ipcRenderer, remote } = require('electron'); const RUN_LOCATION = '\\Software\\Microsoft\\Windows\\CurrentVersion\\Run'; //const file = process.execPath; //const WinReg = require('winreg'); let flashTrayTimer = null; class WindowUtil { // 窗口最小化 static minWindow() { remote.getCurrentWindow().minimize(); } // 窗口最大化 static maxWindow(isMaxed) { const browserWindow = remote.getCurrentWindow(); if (!isMaxed) { browserWindow.unmaximize(); } else { browserWindow.maximize(); } } // 設置窗口是否能改變大小,參數true/false static setResizable(resizable) { remote.getCurrentWindow().setResizable(resizable); } // 下載文件 static download(url) { remote.getCurrentWebContents().downloadURL(url); } // 隱藏窗口 static hide() { const browserWindow = remote.getCurrentWindow(); browserWindow.hide(); } // 顯示窗口 static show() { const browserWindow = remote.getCurrentWindow(); browserWindow.show(); } // 窗口閃爍 static flashFrame() { const browserWindow = remote.getCurrentWindow(); // if(browserWindow.isFocused() || browserWindow.isVisible()) if (!browserWindow.isFocused()) { browserWindow.showInactive(); browserWindow.flashFrame(true); } } // 設置窗口最前端顯示 static setAlwaysOnTop(top) { const browserWindow = remote.getCurrentWindow(); browserWindow.setAlwaysOnTop(top); } // 設置開機啓動 static enableAutoStart(callback) { let key = new WinReg({ hive: WinReg.HKCU, key: RUN_LOCATION }); key.set('EUC', WinReg.REG_SZ, file, (err) => { console.log('設置自動啓動' + err); callback(err); }); } // 取消開機啓動 static disableAutoStart(callback) { let key = new WinReg({ hive: WinReg.HKCU, key: RUN_LOCATION }); key.remove('EUC', (err) => { console.log('取消自動啓動' + err); callback(err); }); } // 獲取是否開機啓動 static getAutoStartValue(callback) { let key = new WinReg({ hive: WinReg.HKCU, key: RUN_LOCATION }); key.get('EUC', function (error, result) { console.log("查詢自動啓動:" + JSON.stringify(result)); console.log("file:" + file); if (result) { callback(true); } else { callback(false); } }); } /** * 托盤圖標閃爍 * @param flash true:閃爍;false:中止 */ static flashTray(flash) { let hasIcon = false; const tayIcon = './imgs/logo.ico'; const tayIcon1 = './imgs/empty.png'; if (flash) { if (flashTrayTimer) { return; } flashTrayTimer = window.setInterval(() => { ipcRenderer.send('ChangeTrayIcon', hasIcon ? tayIcon : tayIcon1); hasIcon = !hasIcon; }, 500); } else { if (flashTrayTimer) { window.clearInterval(flashTrayTimer); flashTrayTimer = null; } ipcRenderer.send('ChangeTrayIcon', tayIcon); } } } module.exports = WindowUtil;
三、窗口大小的改變;數組
添加一句話:BrowserWindow.mainWindow = mainWindow;不知道有用沒有用
this.$router.push('/mainChat');//路由跳轉mainChat const remote = require('electron').remote; const BrowserWindow = remote.BrowserWindow; BrowserWindow.mainWindow.setSize(common.WINDOW_SIZE_MAINCIAT.width,common.WINDOW_SIZE_MAINCIAT.height); BrowserWindow.mainWindow.center() common.WINDOW_SIZE_MAINCIAT.width, 850 common.WINDOW_SIZE_MAINCIAT.height,600
4.electron 的Api部分;electron
win.setSize(width, height[, animate]) width Integer height Integer animate Boolean (可選) OS X 從新設置窗口的寬高值. win.getSize() 返回一個數組,它包含了窗口的寬,高. win.setContentSize(width, height[, animate]) width Integer height Integer animate Boolean (可選) OS X 從新設置窗口客戶端的寬高值(例如網頁界面). win.getContentSize() 返回一個數組,它包含了窗口客戶端的寬,高. win.setMinimumSize(width, height) width Integer height Integer 設置窗口最小化的寬高值. win.getMinimumSize() 返回一個數組,它包含了窗口最小化的寬,高. win.setMaximumSize(width, height) width Integer height Integer 設置窗口最大化的寬高值. win.getMaximumSize() 返回一個數組,它包含了窗口最大化的寬,高. win.setResizable(resizable) resizable Boolean 設置窗口是否能夠被用戶改變size. win.isResizable() 返回 boolean,窗口是否能夠被用戶改變size. win.setMovable(movable) OS X Windows movable Boolean 設置窗口是否能夠被用戶拖動. Linux 無效. win.isMovable() OS X Windows 返回 boolean,窗口是否能夠被用戶拖動. Linux 老是返回 true. win.setMinimizable(minimizable) OS X Windows minimizable Boolean 設置窗口是否能夠最小化. Linux 無效. win.isMinimizable() OS X Windows 返回 boolean,窗口是否能夠最小化. Linux 老是返回 true. win.setMaximizable(maximizable) OS X Windows maximizable Boolean 設置窗口是否能夠最大化. Linux 無效. win.isMaximizable() OS X Windows 返回 boolean,窗口是否能夠最大化. Linux 老是返回 true. win.setFullScreenable(fullscreenable) fullscreenable Boolean 設置點擊最大化按鈕是否能夠全屏或最大化窗口. win.isFullScreenable() 返回 boolean,點擊最大化按鈕是否能夠全屏或最大化窗口. win.setClosable(closable) OS X Windows closable Boolean 設置窗口是否能夠人爲關閉. Linux 無效. win.isClosable() OS X Windows 返回 boolean,窗口是否能夠人爲關閉. Linux 老是返回 true. win.setAlwaysOnTop(flag) flag Boolean 是否設置這個窗口始終在其餘窗口之上.設置以後,這個窗口仍然是一個普通的窗口,不是一個不能夠得到焦點的工具箱窗口. win.isAlwaysOnTop() 返回 boolean,當前窗口是否始終在其它窗口以前. win.center() 窗口居中. win.setPosition(x, y[, animate]) x Integer y Integer animate Boolean (可選) OS X 移動窗口到對應的 x and y 座標. win.getPosition() 返回一個包含當前窗口位置的數組. win.setTitle(title) title String 改變原窗口的title. win.getTitle() 返回原窗口的title. 注意: 界面title可能和窗口title不相同. win.flashFrame(flag) flag Boolean 開始或中止顯示窗口來得到用戶的關注. win.setSkipTaskbar(skip)