feat(desktop): 增加截图功能

pull/90/head
moonrailgun 2 years ago
parent f0abf1b9cb
commit d82854a3ec

@ -45,6 +45,7 @@
"package:nodebug": "ts-node ./.erb/scripts/clean.js dist && yarn build && electron-builder build --publish never", "package:nodebug": "ts-node ./.erb/scripts/clean.js dist && yarn build && electron-builder build --publish never",
"rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app", "rebuild": "electron-rebuild --parallel --types prod,dev,optional --module-dir release/app",
"dev": "cross-env FE_URL=http://127.0.0.1:11011 SERVICE_URL=http://127.0.0.1:11000 yarn start", "dev": "cross-env FE_URL=http://127.0.0.1:11011 SERVICE_URL=http://127.0.0.1:11000 yarn start",
"dev:nightly": "cross-env FE_URL=http://nightly.paw.msgbyte.com SERVICE_URL=https://tailchat-nightly.moonrailgun.com/ yarn start",
"start": "ts-node ./.erb/scripts/check-port-in-use.js && yarn start:renderer", "start": "ts-node ./.erb/scripts/check-port-in-use.js && yarn start:renderer",
"start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .", "start:main": "cross-env NODE_ENV=development electronmon -r ts-node/register/transpile-only .",
"start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts", "start:preload": "cross-env NODE_ENV=development TS_NODE_TRANSPILE_ONLY=true webpack --config ./.erb/configs/webpack.config.preload.dev.ts",
@ -115,11 +116,13 @@
"electron-debug": "^3.2.0", "electron-debug": "^3.2.0",
"electron-is": "^3.0.0", "electron-is": "^3.0.0",
"electron-log": "^4.4.7", "electron-log": "^4.4.7",
"electron-screenshots": "^0.5.15",
"electron-serve": "^1.1.0", "electron-serve": "^1.1.0",
"electron-updater": "^5.0.1", "electron-updater": "^5.0.1",
"electron-window-state": "^5.0.3", "electron-window-state": "^5.0.3",
"express": "^4.18.1", "express": "^4.18.1",
"get-port": "5.1.1", "get-port": "5.1.1",
"lodash": "^4.17.21",
"react": "^18.1.0", "react": "^18.1.0",
"react-dom": "^18.1.0", "react-dom": "^18.1.0",
"react-router-dom": "^6.3.0", "react-router-dom": "^6.3.0",
@ -131,6 +134,7 @@
"@teamsupercell/typings-for-css-modules-loader": "^2.5.1", "@teamsupercell/typings-for-css-modules-loader": "^2.5.1",
"@testing-library/jest-dom": "^5.16.4", "@testing-library/jest-dom": "^5.16.4",
"@testing-library/react": "^13.2.0", "@testing-library/react": "^13.2.0",
"@types/lodash": "^4.14.191",
"@types/jest": "^27.5.1", "@types/jest": "^27.5.1",
"@types/node": "^17.0.42", "@types/node": "^17.0.42",
"@types/react": "^18.0.9", "@types/react": "^18.0.9",

@ -16,6 +16,7 @@ import MenuBuilder from './menu';
import { getMainWindowUrl } from './util'; import { getMainWindowUrl } from './util';
import windowStateKeeper from 'electron-window-state'; import windowStateKeeper from 'electron-window-state';
import is from 'electron-is'; import is from 'electron-is';
import { initScreenshots } from './screenshots';
log.info('Start...'); log.info('Start...');
@ -189,6 +190,8 @@ app
.whenReady() .whenReady()
.then(() => { .then(() => {
createWindow(); createWindow();
initScreenshots();
app.on('activate', () => { app.on('activate', () => {
// On macOS it's common to re-create a window in the app when the // On macOS it's common to re-create a window in the app when the
// dock icon is clicked and there are no other windows open. // dock icon is clicked and there are no other windows open.

@ -0,0 +1,25 @@
import { globalShortcut } from 'electron';
import Screenshots from 'electron-screenshots';
import _once from 'lodash/once';
export const initScreenshots = _once(() => {
const screenshots = new Screenshots();
globalShortcut.register('ctrl+shift+a', () => {
screenshots.startCapture();
// screenshots.$view.webContents.openDevTools();
});
// 点击确定按钮回调事件
screenshots.on('ok', (e, buffer, bounds) => {
console.log('capture', buffer, bounds);
});
// 点击取消按钮回调事件
screenshots.on('cancel', () => {
console.log('capture', 'cancel');
});
// 点击保存按钮回调事件
screenshots.on('save', (e, buffer, bounds) => {
console.log('capture', buffer, bounds);
});
});

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save