|
|
@@ -1,306 +0,0 @@
|
|
|
-'use strict';
|
|
|
-
|
|
|
-/**
|
|
|
- * 前端(html)调用electron功能时,建议使用该模块
|
|
|
- *
|
|
|
- * 定义的function 接收三个参数
|
|
|
- * @param event ipcMain事件对象
|
|
|
- * @param channel 频道
|
|
|
- * @param arg 接收到的消息
|
|
|
- */
|
|
|
-
|
|
|
-const {app, dialog, BrowserWindow, BrowserView, Notification, powerMonitor, screen, nativeTheme} = require('electron');
|
|
|
-const path = require('path');
|
|
|
-const _ = require('lodash');
|
|
|
-
|
|
|
-let myTimer = null;
|
|
|
-let browserViewObj = null;
|
|
|
-let notificationObj = null;
|
|
|
-
|
|
|
-exports.hello = function (event, channel, msg) {
|
|
|
- let newMsg = msg + " +1"
|
|
|
- let reply = ''
|
|
|
- reply = '收到:' + msg + ',返回:' + newMsg
|
|
|
- return reply
|
|
|
-}
|
|
|
-
|
|
|
-exports.messageShow = function (event, channel, arg) {
|
|
|
- dialog.showMessageBoxSync({
|
|
|
- type: 'info', // "none", "info", "error", "question" 或者 "warning"
|
|
|
- title: '自定义标题-message',
|
|
|
- message: '自定义消息内容',
|
|
|
- detail: '其它的额外信息'
|
|
|
- })
|
|
|
-
|
|
|
- return '打开了消息框';
|
|
|
-}
|
|
|
-
|
|
|
-exports.messageShowConfirm = function (event, channel, arg) {
|
|
|
- const res = dialog.showMessageBoxSync({
|
|
|
- type: 'info',
|
|
|
- title: '自定义标题-message',
|
|
|
- message: '自定义消息内容',
|
|
|
- detail: '其它的额外信息',
|
|
|
- cancelId: 1, // 用于取消对话框的按钮的索引
|
|
|
- defaultId: 0, // 设置默认选中的按钮
|
|
|
- buttons: ['确认', '取消'], // 按钮及索引
|
|
|
- })
|
|
|
- let data = (res === 0) ? '点击确认按钮' : '点击取消按钮';
|
|
|
- console.log('[electron] [ipc] [example] [messageShowConfirm] 结果:', res);
|
|
|
-
|
|
|
- return data;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 长消息 - 开始
|
|
|
- */
|
|
|
-exports.socketMessageStart = function (event, channel, arg) {
|
|
|
- // 每隔1秒,向前端页面发送消息
|
|
|
- // 用定时器模拟
|
|
|
- myTimer = setInterval(function(e, c, msg) {
|
|
|
- let timeNow = Date.now();
|
|
|
- let data = msg + ':' + timeNow;
|
|
|
- e.reply(`${c}`, data)
|
|
|
- }, 1000, event, channel, arg)
|
|
|
-
|
|
|
- return '开始了'
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 长消息 - 停止
|
|
|
- */
|
|
|
-exports.socketMessageStop = function () {
|
|
|
- clearInterval(myTimer);
|
|
|
- return '停止了'
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 加载视图内容
|
|
|
- */
|
|
|
-exports.loadViewContent = function (event, channel, arg) {
|
|
|
- let content = null;
|
|
|
- if (arg.type == 'html') {
|
|
|
- content = path.join('file://', app.getAppPath(), arg.content)
|
|
|
- } else {
|
|
|
- content = arg.content;
|
|
|
- }
|
|
|
-
|
|
|
- browserViewObj = new BrowserView();
|
|
|
- MAIN_WINDOW.setBrowserView(browserViewObj)
|
|
|
- browserViewObj.setBounds({
|
|
|
- x: 300,
|
|
|
- y: 170,
|
|
|
- width: 650,
|
|
|
- height: 400
|
|
|
- });
|
|
|
- browserViewObj.webContents.loadURL(content);
|
|
|
- return true
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 移除视图内容
|
|
|
- */
|
|
|
-exports.removeViewContent = function () {
|
|
|
- MAIN_WINDOW.removeBrowserView(browserViewObj);
|
|
|
- return true
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 打开新窗口
|
|
|
- */
|
|
|
-exports.createWindow = function (event, channel, arg) {
|
|
|
- let content = null;
|
|
|
- if (arg.type == 'html') {
|
|
|
- content = path.join('file://', app.getAppPath(), arg.content)
|
|
|
- } else {
|
|
|
- content = arg.content;
|
|
|
- }
|
|
|
-
|
|
|
- let winObj = new BrowserWindow({
|
|
|
- x: 10,
|
|
|
- y: 10,
|
|
|
- width: 980,
|
|
|
- height: 650
|
|
|
- })
|
|
|
- winObj.loadURL(content);
|
|
|
-
|
|
|
- return winObj.id
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 创建系统通知
|
|
|
- */
|
|
|
-exports.sendNotification = function (event, channel, arg) {
|
|
|
- if (!Notification.isSupported()) {
|
|
|
- return '当前系统不支持通知';
|
|
|
- }
|
|
|
-
|
|
|
- let options = {};
|
|
|
- if (!_.isEmpty(arg.title)) {
|
|
|
- options.title = arg.title;
|
|
|
- }
|
|
|
- if (!_.isEmpty(arg.subtitle)) {
|
|
|
- options.subtitle = arg.subtitle;
|
|
|
- }
|
|
|
- if (!_.isEmpty(arg.body)) {
|
|
|
- options.body = arg.body;
|
|
|
- }
|
|
|
- if (!_.isEmpty(arg.silent)) {
|
|
|
- options.silent = arg.silent;
|
|
|
- }
|
|
|
-
|
|
|
- notificationObj = new Notification(options);
|
|
|
-
|
|
|
- if (arg.clickEvent) {
|
|
|
- notificationObj.on('click', (e) => {
|
|
|
- let data = {
|
|
|
- type: 'click',
|
|
|
- msg: '您点击了通知消息'
|
|
|
- }
|
|
|
- event.reply(`${channel}`, data)
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- if (arg.closeEvent) {
|
|
|
- notificationObj.on('close', (e) => {
|
|
|
- let data = {
|
|
|
- type: 'close',
|
|
|
- msg: '您关闭了通知消息'
|
|
|
- }
|
|
|
- event.reply(`${channel}`, data)
|
|
|
- });
|
|
|
- }
|
|
|
-
|
|
|
- notificationObj.show();
|
|
|
-
|
|
|
- return true
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 电源监控
|
|
|
- */
|
|
|
-exports.initPowerMonitor = function (event, channel, arg) {
|
|
|
- powerMonitor.on('on-ac', (e) => {
|
|
|
- let data = {
|
|
|
- type: 'on-ac',
|
|
|
- msg: '接入了电源'
|
|
|
- }
|
|
|
- event.reply(`${channel}`, data)
|
|
|
- });
|
|
|
-
|
|
|
- powerMonitor.on('on-battery', (e) => {
|
|
|
- let data = {
|
|
|
- type: 'on-battery',
|
|
|
- msg: '使用电池中'
|
|
|
- }
|
|
|
- event.reply(`${channel}`, data)
|
|
|
- });
|
|
|
-
|
|
|
- powerMonitor.on('lock-screen', (e) => {
|
|
|
- let data = {
|
|
|
- type: 'lock-screen',
|
|
|
- msg: '锁屏了'
|
|
|
- }
|
|
|
- event.reply(`${channel}`, data)
|
|
|
- });
|
|
|
-
|
|
|
- powerMonitor.on('unlock-screen', (e) => {
|
|
|
- let data = {
|
|
|
- type: 'unlock-screen',
|
|
|
- msg: '解锁了'
|
|
|
- }
|
|
|
- event.reply(`${channel}`, data)
|
|
|
- });
|
|
|
-
|
|
|
- return true
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取屏幕信息
|
|
|
- */
|
|
|
-exports.getScreen = function (event, channel, arg) {
|
|
|
-
|
|
|
- let data = [];
|
|
|
- let res = {};
|
|
|
- if (arg == 0) {
|
|
|
- let res = screen.getCursorScreenPoint();
|
|
|
- data = [
|
|
|
- {
|
|
|
- title: '横坐标',
|
|
|
- desc: res.x
|
|
|
- },
|
|
|
- {
|
|
|
- title: '纵坐标',
|
|
|
- desc: res.y
|
|
|
- },
|
|
|
- ]
|
|
|
-
|
|
|
- return data;
|
|
|
- }
|
|
|
- if (arg == 1) {
|
|
|
- res = screen.getPrimaryDisplay();
|
|
|
- }
|
|
|
- if (arg == 2) {
|
|
|
- let resArr = screen.getAllDisplays();
|
|
|
- // 数组,只取一个吧
|
|
|
- res = resArr[0];
|
|
|
- }
|
|
|
- // console.log('[electron] [ipc] [example] [getScreen] res:', res);
|
|
|
- data = [
|
|
|
- {
|
|
|
- title: '分辨率',
|
|
|
- desc: res.bounds.width + ' x ' + res.bounds.height
|
|
|
- },
|
|
|
- {
|
|
|
- title: '单色显示器',
|
|
|
- desc: res.monochrome ? '是' : '否'
|
|
|
- },
|
|
|
- {
|
|
|
- title: '色深',
|
|
|
- desc: res. colorDepth
|
|
|
- },
|
|
|
- {
|
|
|
- title: '色域',
|
|
|
- desc: res.colorSpace
|
|
|
- },
|
|
|
- {
|
|
|
- title: 'scaleFactor',
|
|
|
- desc: res.scaleFactor
|
|
|
- },
|
|
|
- {
|
|
|
- title: '加速器',
|
|
|
- desc: res.accelerometerSupport
|
|
|
- },
|
|
|
- {
|
|
|
- title: '触控',
|
|
|
- desc: res.touchSupport == 'unknown' ? '不支持' : '支持'
|
|
|
- },
|
|
|
- ]
|
|
|
-
|
|
|
- return data;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 获取系统主题
|
|
|
- */
|
|
|
-exports.getTheme = function (event, channel, arg) {
|
|
|
- let theme = 'system';
|
|
|
- if (nativeTheme.shouldUseHighContrastColors) {
|
|
|
- theme = 'light';
|
|
|
- } else if (nativeTheme.shouldUseInvertedColorScheme) {
|
|
|
- theme = 'dark';
|
|
|
- }
|
|
|
-
|
|
|
- return theme;
|
|
|
-}
|
|
|
-
|
|
|
-/**
|
|
|
- * 设置系统主题
|
|
|
- */
|
|
|
-exports.setTheme = function (event, channel, arg) {
|
|
|
-
|
|
|
- // TODO 好像没有什么明显效果
|
|
|
- nativeTheme.themeSource = arg;
|
|
|
-
|
|
|
- return arg;
|
|
|
-}
|