linux/windows wps node.js插件对PPT状态监听并且通知其他应用

需求背景

公司要求对Window系统,和国产操作系统(UOS)的wps 软件在 PPT开始播放 结束播放,和播放中翻页 上一页 下一页 等状态进行监听,并通知到我们桌面应用。

技术方案

  • 开发WPS插件,使用node.JS 插件开发,同时支持了window / linux
  • 对WPS 消息进行监听
  • 通知到其他应用程序

实现过程

  • 开发WPS插件

这里不做过多讲解,请查看我前面的文章,wps linux node.js 加载项开发,和离线部署方案,说得比较清楚了!

这里详细说下WPS事件的监听通知到其他应用程序

按照我前面的文章(wps linux node.js 加载项开发,和离线部署方案)在创建好的目录下面,有个JS文件夹里面的ribbon.js文件函数:OnAddinLoad是启动入口,如下图所示:
在这里插入图片描述OnAddinLoad函数里面我调用了自己实现的InitWebSocketRegisterCommand

  • InitWebSocket 函数代码完整实现
var planWebsocket = null;
var planIP = "127.0.0.1"; // IP地址
var planPort = "9800";    // 端口号/** 摘要提示:Lv* 初始化websocket   */
function InitWebSocket() {if ('WebSocket' in window) {planWebsocket = new WebSocket('ws://'+ planIP +':' + planPort + '/PPTController'); // 通信地址planWebsocket.onopen = function (event) {console.log('建立连接');let sendData = {"command": "getplans", "data": [{"planid": 0}]}planWebsocket.send(JSON.stringify(sendData)); // 发送获取数据的接口}planWebsocket.onmessage = function (event) {// console.log('收到消息:' + event.data)let data = JSON.parse(event.data);if (data.command == "getplans") {var planData = data.data;//返回的数据console.log(planData);} else if (data.command == "getscenes") {// 其他命令}}planWebsocket.onclose = function (event) {console.log('连接关闭');}planWebsocket.onerror = function () {alert('websocket通信发生错误!');}} else {alert('该浏览器不支持websocket!');}}
  • RegisterCommand 函数代码完整实现
/** 摘要提示:Lv* 注册PPT播放状态的事件 */
function RegisterCommand()
{wps.ApiEvent.AddApiEventListener('SlideShowBegin', Application_SlideShowBegin);wps.ApiEvent.AddApiEventListener('SlideShowEnd', SlideShowEndCommand);wps.ApiEvent.AddApiEventListener('SlideShowNextSlide',SlideShowNextSlideCommand);wps.ApiEvent.AddApiEventListener('SlideShowOnPrevious',SlideShowOnPreviousCommand);
}function Application_SlideShowBegin(Wn) {alert("开始播放");//调用SendMsg发送消息,示例:SendMsg("SlideShowBegin","开始播放");
}function SlideShowEndCommand(Wn)
{alert("结束播放");
}function SlideShowNextSlideCommand(Wn)
{alert("准备播放下一页");
}function SlideShowOnPreviousCommand(Wn)
{alert("上一页");
}function SendMsg(type,msg)
{let sendData = {"command": type, "data": msg}planWebsocket.send(JSON.stringify(sendData));
}

如上代码描述:
我在我wps 启动node.js 插件时,首先我实例化了一个WebSocket服务,且注册了ppt相关的事件回调。在回调函数内,我使用WebSocket 通信告诉其他应用程序,其他程序接收到消息后执行自身的业务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/47797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

系统架构设计师①:计算机组成与体系结构

系统架构设计师①:计算机组成与体系结构 计算机结构 计算机的组成结构可以概括为以下几个主要部分:中央处理器(CPU)、存储器(包括主存和外存)、输入设备、输出设备,以及控制器、运算器、总线和…

如何查看jvm资源占用情况

如何设置jar的内存 java -XX:MetaspaceSize256M -XX:MaxMetaspaceSize256M -XX:AlwaysPreTouch -XX:ReservedCodeCacheSize128m -XX:InitialCodeCacheSize128m -Xss512k -Xmx2g -Xms2g -XX:UseG1GC -XX:G1HeapRegionSize4M -jar your-application.jar以上配置为堆内存4G jar项…

使用puma部署ruby on rails的记录

之前写过一篇《记录一下我的Ruby On Rails的systemd服务脚本》的记录,现在补上一个比较政治正确的Ruby On Rails的生产环境部署记录。使用Puma部署项目。 创建文件 /usr/lib/systemd/system/puma.service [Unit] DescriptionPuma HTTP Server DocumentationRuby O…

[AWS]MSK调用,报错Access denied

背景:首先MSK就是配置一个AWS的托管 kafka,创建完成之后就交给开发进行使用,开发通常是从代码中,编写AWS的access_key 和secret_key进行调用。 但是开发在进行调用的时候,一直报错连接失败,其实问题很简单&…

Electron 企业级开发通信与本地存储实用解决方案

背景 之前写了一篇Electron通信的方式,讲述了一下三者之间的通信机制,比较恶心,后来发现有个electron/remote, Electron 渲染进程直接调用主进程的API库electron/remote引用讲解-CSDN博客文章浏览阅读58次。remote是个老库&…

蓝队黑名单IP解封提取脚本

应用场景:公司给蓝队人员一个解封IP列表,假如某个IP满足属于某某C段,则对该IP进行解封。该脚本则是进行批量筛选出符合条件的白名单IP 实操如下:公司给了一个已经封禁了的黑名单IP列表如下(black) 公司要求…

高清视频,无损音频,LDR6023——打造极致视听与高效充电的双重享受!

Type-C PD(Power Delivery)芯片是一种支持USB Type-C接口规范的电源管理单元,其主要功能包括: 快速充电:Type-C PD芯片支持高功率传输,能够提供更快的充电速度,使电子设备在短时间内充满电&…

微信小程序:多图片显示及图片点击放大,多视频显示

微信小程序&#xff1a;多图片显示及图片点击放大&#xff0c;多视频显示 01 多图片显示及图片点击放大02 多视频03 全部代码 01 多图片显示及图片点击放大 <view><view class"title">图片&#xff1a;</view><block wx:if"{{photoUrlList…

源码搭建国内微短剧系统(APP+小程序)云存储配置流程

国内微短剧系统很多人不知道云存储和配置的操作流程&#xff0c;我整理了一份非常详细的操作文档流程&#xff0c;给大家介绍短剧系统云存储配置的详细操作流程。顺便推荐一下国内微短剧系统。 推荐下他们的开源地址&#xff1a;https://gitee.com/nymaite_com_2878868888/tjg…

CrowdStrike更新致850万Windows设备宕机,微软紧急救火!

7月18日&#xff0c;网络安全公司CrowdStrike发布了一次软件更新&#xff0c;导致全球大范围Windows系统宕机。 预估CrowdStrike的更新影响了将近850万台Windows设备&#xff0c;多行业服务因此停滞&#xff0c;全球打工人原地放假&#xff0c;坐等吃瓜&#xff0c;网络上爆梗…

适用于 Mac 或 MacBook 的最佳数据恢复软件

Apple 设计的电脑可靠且用户友好&#xff0c;但即使是最好的最新款 MacBook硬件也会出现故障。当您的存储出现问题时&#xff0c;数据恢复软件可以帮助您恢复丢失和损坏的文件。 数据丢失的另一个原因是有时会发生令人尴尬的错误。如果您不小心丢弃了所需的文件&#xff0c;然…

【RaspberryPi】树莓派Matlab/Simulink支持包安装与使用

官网支持与兼容性 Raspberry Pi Support from MATLAB - Hardware Support - MATLAB & Simulink Raspberry Pi Support from Simulink - Hardware Support - MATLAB & Simulink Matlab与树莓派兼容性 Simulink与树莓派兼容性 树莓派Matlab&Simulink RaspberryPi支…

本地部署 mistralai/Mistral-Nemo-Instruct-2407

本地部署 mistralai/Mistral-Nemo-Instruct-2407 1. 创建虚拟环境2. 安装 fschat3. 安装 transformers4. 安装 flash-attn5. 安装 pytorch6. 启动 controller7. 启动 mistralai/Mistral-Nemo-Instruct-24078. 启动 api9. 访问 mistralai/Mistral-Nemo-Instruct-2407 1. 创建虚拟…

240722视频识别红色物体

文章目录 1.实验目的2.实验思路3.实验代码4.实验结果展示1.实验目的 针对需求,拍摄视频并实时识别其中红色物体。 2.实验思路 针对HSV模型可以很好的区分色彩这一特性,所以我们可以很好的找到我们需要的ROI 3.实验代码 # @File: 13.2拍视频识别其中的红色物体.py # @Au…

【测开能力提升-fastapi框架】fastapi能力提升 - 中间件与CORS

1. 中间件 1.1 介绍&#xff08;ChatGPT抄的&#xff0c;大致可以理解&#xff09; 一种机制&#xff0c;用于在处理请求和响应之前对其进行拦截、处理或修改。中间件可以在应用程序的请求处理管道中插入自定义逻辑&#xff0c;以实现一些通用的功能&#xff0c;如身份验证、…

传神社区|数据集合集第7期|法律NLP数据集合集

自从ChatGPT等大型语言模型&#xff08;Large Language Model, LLM&#xff09;出现以来&#xff0c;其类通用人工智能&#xff08;AGI&#xff09;能力引发了自然语言处理&#xff08;NLP&#xff09;领域的新一轮研究和应用浪潮。尤其是ChatGLM、LLaMA等普通开发者都能运行的…

Sokit(TCP/UDP调试工具)

下载&#xff1a;http://www.winwin7.com/soft/56522.html#xiazai Sokit中文版是一款免费开源的TCP / UDP 测试&#xff08;调试&#xff09;工具&#xff0c;它主要可以用于接收和发送TCP/UDP数据包&#xff0c;让你更深的了解网络状况&#xff0c;能够有效地接收、发送、转…

简析漏洞生命周期管理的价值与关键要求

开展全面且持续的漏洞管理工作&#xff0c;对于企业组织改善数字化应用安全状况&#xff0c;降低潜在风险&#xff0c;并保持数字资产的完整性和可信度至关重要。做好漏洞管理并不容易&#xff0c;组织不仅需要拥有健全的漏洞管理策略&#xff0c;同时还要辅以明确定义的漏洞管…

TCP并发服务器多线程

1.创建线程‐‐pthread_create int pthread_create( pthread_t *thread, // 线程 ID 无符号长整型 const pthread_attr_t *attr, // 线程属性&#xff0c; NULL void *(*start_routine)(void *), // 线程处理函数 void *arg); // 线程处理函数 参数&#xff1a; pthrea…

安装Ubuntu24.04服务器版本

Ubuntu系统安装 一.启动安装程序二.执行 Ubuntu Server 安装向导1.选择安装程序语言&#xff0c;通常选择「English」2.设置键盘布局&#xff0c;默认「English US」即可3.选择安装方式 三.配置网络1.按Tab键选择网络接口&#xff08;例如 ens160&#xff09;&#xff0c;然后按…