当前位置: 首页 > news >正文

【GOOGLE插件】chrome.runtime.sendNativeMessage与本地应用交互

【GOOGLE插件】chrome.runtime.sendNativeMessage与本地应用交互

    • manifest.json
    • background.js
    • com.examp.nativeapp.json
    • c.bat
    • 注册表路径
    • 测试

manifest.json

{
  "manifest_version": 2,
  "name": "202502271738",
  "description": "",
  "version": "0.9.9",
  "permissions": [
    "activeTab",
    "tabs",
    "storage",
    "commands",
    "nativeMessaging"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": false
  }
}

background.js

document.addEventListener('DOMContentLoaded', function () {
    chrome.runtime.sendNativeMessage('com.example12.nativeapp',{ "message": "Hello from Chrome" },(response) => {
          if (chrome.runtime.lastError) {
            alert('Error: ' + chrome.runtime.lastError.message);
          } else {
            alert('Response: ' + JSON.stringify(response));
          }
    });
})

com.examp.nativeapp.json

{
    "name": "com.example12.nativeapp",
    "description": "Native messaging host for python app",
    "path": "c.bat",
    "type": "stdio",
    "allowed_origins": [
        "chrome-extension://nfdljdonlekonbbjemmdjaljiahfeddj/"
    ]
}

c.bat

@echo off
python cc.py

cc.py

import json
import sys


def read_message():
    """从标准输入读取消息"""
    raw_length = sys.stdin.buffer.read(4)
    if not raw_length:
        return None
    message_length = int.from_bytes(raw_length, byteorder='little')
    message = sys.stdin.buffer.read(message_length).decode('utf-8')
    return json.loads(message)


def write_message(message):
    """将消息写入标准输出"""
    message_json = json.dumps(message).encode('utf-8')
    message_length = len(message_json).to_bytes(4, byteorder='little')
    sys.stdout.buffer.write(message_length)
    sys.stdout.buffer.write(message_json)
    sys.stdout.buffer.flush()


def main():
    """主函数,处理消息通信"""
    received_message = read_message()
    if received_message:
        print(f"收到来自 Chrome 插件的消息: {received_message.get('message')}")
        response = {"message": "Hello from Python!"}
        write_message(response)
    else:
        print("未接收到消息")


if __name__ == "__main__":
    main()

注册表路径

计算机\HKEY_CURRENT_USER\SOFTWARE\Google\Chrome\NativeMessagingHosts\com.example12.nativeapp
名称:默认
类型:REG_SZ
数据:com.examp.nativeapp.json文件所在的路径

测试

只要一加载插件,就会和本地的应用交互,弹出{“message”: “Hello from Python!”}

相关文章:

  • 爬虫案例十三js逆向模拟登录中大网校
  • 使用OpenCV和MediaPipe库——抽烟检测(姿态监控)
  • 【大模型技术】怎么用agent和prompt工程实现用户的要求?
  • c++ 中的float和double 的区别 开发过程中使用哪个更好
  • Centos离线安装perl
  • 高速PCB设计(布线设计)
  • React Next项目中导入Echart世界航线图 并配置中文
  • 本地算力部署大模型详细流程(一)
  • 机器学习_特征工程
  • 计算机网络-网络规划与设计
  • unity基础——线段与拖尾
  • 在Pycharm配置conda虚拟环境的Python解释器
  • LLM(1):了解大语言模型
  • 基于Transformer的医学文本分类:从BERT到BioBERT
  • JetBrains(全家桶: IDEA、WebStorm、GoLand、PyCharm) 2024.3+ 2025 版免费体验方案
  • 基于SpringBoot的“校园周边美食探索及分享平台”的设计与实现(源码+数据库+文档+PPT)
  • 【含文档+PPT+源码】基于微信小程序的社区便民防诈宣传系统设计与实现
  • 框架、云原生、微服务的基本概念
  • C# 的 ManualResetEvent(线程同步操作) 类详解
  • C++————快慢双指针寻找链表循环
  • 这个死亡率第一的“老年病”,正悄悄逼近年轻人
  • 减负举措如何助力基层干部轻装上阵?记者一线调查
  • 《缶翁的世界》首发:看吴昌硕王一亭等湖州籍书画家的影响
  • 芬兰直升机相撞坠毁事故中五名人员全部遇难
  • 上海天文馆走进徐家汇书院,XR沉浸式天文科普体验再推力作
  • 中国首艘海洋级智能科考船“同济”号试航成功,可搭载水下遥控机器人