首页 > 其他分享 >第8章:Electron 剪贴版和消息通知

第8章:Electron 剪贴版和消息通知

时间:2024-07-05 20:58:36浏览次数:21  
标签:剪贴板 const 剪贴 通知 Electron clipboard result text Example

在本章中,我们将介绍如何在Electron应用中与操作系统进行集成。这些操作包括剪贴板操作、通知系统、原生对话框等功能。

8.1 剪贴板操作

Electron 提供了 clipboard 模块,允许我们在应用中访问和操作剪贴板内容。以下是一些基本的剪贴板操作示例。

8.1.1 复制文本到剪贴板

我们可以使用 clipboard.writeText 方法将文本复制到剪贴板。

主进程代码

const { app, BrowserWindow, ipcMain, clipboard } = require('electron');
const path = require('path');

let mainWindow;

const createMainWindow = () => {
  mainWindow = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js'),
      contextIsolation: true,
      nodeIntegration: false
    }
  });

  mainWindow.loadFile('index.html');
  mainWindow.webContents.openDevTools();
  mainWindow.on('closed', () => {
    mainWindow = null;
  });
};

app.on('ready', createMainWindow);
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit();
  }
});
app.on('activate', () => {
  if (mainWindow === null) {
    createMainWindow();
  }
});

// 处理剪贴板复制请求
ipcMain.handle('copy-to-clipboard', (event, text) => {
  clipboard.writeText(text);
  return { success: true };
});

预加载脚本(preload.js)

const { contextBridge, ipcRenderer } = require('electron');

contextBridge.exposeInMainWorld('electronAPI', {
  copyToClipboard: (text) => ipcRenderer.invoke('copy-to-clipboard', text)
});

渲染进程代码

<!DOCTYPE html>
<html>
<head>
  <title>Clipboard Example</title>
</head>
<body>
  <h1>Clipboard Example</h1>
  <input type="text" id="textInput" placeholder="Enter text to copy">
  <button id="copyButton">Copy to Clipboard</button>

  <script>
    document.getElementById('copyButton').addEventListener('click', async () => {
      const text = document.getElementById('textInput').value;
      const result = await window.electronAPI.copyToClipboard(text);
      if (result.success) {
        alert('Text copied to clipboard!');
      }
    });
  </script>
</body>
</html>

8.1.2 从剪贴板读取文本

我们可以使用 clipboard.readText 方法从剪贴板读取文本。

主进程代码

ipcMain.handle('read-from-clipboard', () => {
  const text = clipboard.readText();
  return { success: true, text };
});

预加载脚本(preload.js)

contextBridge.exposeInMainWorld('electronAPI', {
  readFromClipboard: () => ipcRenderer.invoke('read-from-clipboard')
});

渲染进程代码

<!DOCTYPE html>
<html>
<head>
  <title>Clipboard Example</title>
</head>
<body>
  <h1>Clipboard Example</h1>
  <button id="pasteButton">Paste from Clipboard</button>
  <p id="pastedText"></p>

  <script>
    document.getElementById('pasteButton').addEventListener('click', async () => {
      const result = await window.electronAPI.readFromClipboard();
      if (result.success) {
        document.getElementById('pastedText').innerText = result.text;
      }
    });
  </script>
</body>
</html>

8.2 通知系统

Electron 提供了 Notification 接口,允许我们在应用中发送系统通知。以下是一些基本的通知示例。

8.2.1 发送基本通知

我们可以使用 new Notification 方法来发送一个基本通知。

渲染进程代码

<!DOCTYPE html>
<html>
<head>
  <title>Notification Example</title>
</head>
<body>
  <h1>Notification Example</h1>
  <button id="notifyButton">Send Notification</button>

  <script>
    document.getElementById('notifyButton').addEventListener('click', () => {
      new Notification('Hello', {
        body: 'This is a notification from your Electron app.'
      });
    });
  </script>
</body>
</html>

8.3 原生对话框

Electron 提供了 dialog 模块,可以方便地显示各种原生对话框,包括消息框、文件选择对话框等。

8.3.1 显示消息框

我们可以使用 dialog.showMessageBox 方法来显示一个消息框。

主进程代码

ipcMain.handle('show-message-box', async () => {
  const result = await dialog.showMessageBox({
    type: 'info',
    title: 'Message Box',
    message: 'This is a message box',
    buttons: ['OK']
  });
  return { success: true, response: result.response };
});

预加载脚本(preload.js)

const { contextBridge, ipcRenderer } = require("electron");

contextBridge.exposeInMainWorld("electronAPI", {
  showMessageBox: () => ipcRenderer.invoke("show-message-box"),
});

渲染进程代码

<!DOCTYPE html>
<html>
<head>
  <title>Message Box Example</title>
</head>
<body>
  <h1>Message Box Example</h1>
  <button id="messageBoxButton">Show Message Box</button>

  <script>
    document.getElementById('messageBoxButton').addEventListener('click', async () => {
      const result = await window.electronAPI.showMessageBox();
      if (result.success) {
        alert('Message box closed with response: ' + result.response);
      }
    });
  </script>
</body>
</html>

通过这些示例,开发者可以在Electron应用中实现与操作系统的深度集成,从而提供更丰富的功能和更好的用户体验。

标签:剪贴板,const,剪贴,通知,Electron,clipboard,result,text,Example
From: https://blog.csdn.net/imdeity/article/details/140007604

相关文章

  • Android 14.0 开机过滤部分通知声音(莫名其妙的通知声音)
    1.概述 在14.0的系统定制开发产品的中,有时候在系统开机的时候会有一些通知的声音,但是由于系统模块太多,也搞不清楚到底是哪个模块发出的通知声音,所以就需要从通知的流程来屏蔽这些通知声音,接下来看具体怎么实现在开机的时候过滤开机声音的功能2.开机过滤部分通知声音(莫名其......
  • 【嵌入式——FreeRTOS】任务通知
    【嵌入式——FreeRTOS】任务通知简介任务通知值的更新方式任务通知优势任务通知劣势任务通知值和通知状态任务通知值的类型任务通知状态相关API发送通知相关API函数接收通知相关API任务通知模拟二值信号量代码示例任务通知模拟消息邮箱代码示例任务通知模拟事件标志组......
  • 怎么配置electron-builder
    electron-builder是一个用于Electron应用程序打包和发布的工具,它支持macOS、Windows和Linux平台。以下是一个清晰且详细的electron-builder配置指南,包括分点表示和归纳,并参考了相关文章中的信息。一、安装electron-builder首先,你需要在你的Electron项目中安装......
  • 2024 4th International Conference on Electronic Information Engineering and Comp
    20244thInternationalConferenceonElectronicInformationEngineeringandComputerTechnologyhttp://www.eiect.org/截稿日期:2024-10-17通知日期:2024-10-21会议日期:2024-11-9会议地点:Shenzhen,China届数:4Withtherapiddevelopmentofscienceandtechnolog......
  • vue3+node.js+mysql+electron+express实现用户登录,文章写入删除,全量更新,增量更新,和截
    第一件事情是安装node.js,去官网下,在终端node-v,npm-v有版本号就行了,不必搞环境配置,保姆级别教程,感谢哥有时间。嘻嘻,祝大家开心。1.首先你要创建electron项目打开vscode,新建终端输入代码npminit这个代码是初始化的意思会生成一个文件package.json里面的代码应该是这......
  • 使用阿里云语音服务实现设备异常实时通知
    随着物联网的普及,设备异常通知方式也变得多种多样。从传统的后台异常列表,到短信通知,再到微信消息通知等。然而,当设备探测到火警等紧急异常时,需要实时通知到相关人员。本文将介绍如何借助阿里云的语音服务来实现这一功能。1.准备工作1.1资质申请首先,登录阿里云语音服务,进行......
  • electron 启动时调用exe
    在electron主程序,一般未main中//exe地址letservicePath='resources/service/win-unpacked/vue3-ts-music.exe'if(process.env.NODE_ENV==='development'){ servicePath='service/win-unpacked/vue3-ts-music.exe'}app.whenReady()......
  • 邮件通知提醒邮箱设置教程及API代码示例!
    邮件通知的警告功能如何配置?详细教程与API代码示例!无论是业务提醒、账户活动警告,还是个人事务,邮件通知已经成为一种重要的沟通工具。AokSend将详细介绍如何设置邮件通知提醒邮箱,并提供相应的API代码示例,帮助你更高效地管理信息流。邮件通知:选择务提供商常见的有Gmail、Outl......
  • 使用开源ntfy消息推送服务发布通知实现全平台接收通知
    说明:ntfy源代码:https://github.com/binwiederhier/ntfy.git官方未编译Windows版本,本人编译最新版本:(链接:https://pan.baidu.com/s/1pMsfqNb5FKHawTLUBTgjQA?pwd=f84u提取码:f84u)服务部署系统:WindowsServer2019或其他Windows系统简介ntfy是一个开源的消息通知服务,旨在简化消......
  • 【Spring Boot】Spring AOP中的环绕通知
    目录一、什么是AOP?二、AOP的环绕通知2.1切点以及切点表达式2.2连接点2.3通知(Advice)2.4切面(Aspect)2.5不同通知类型的区别2.5.1正常情况下2.5.2异常情况下2.6统一管理切点@PointCut一、什么是AOP?AspectOrientedProgramming(面向切面编程)AOP是Spring框......