摘要
剪贴板同步能够进步很多的效率,免除复制、发送、复制、粘贴的步调,只需要在手机上复制,就可以直接在电脑上 ctrl+v 粘贴,这方面在 Apple 设备中是做的非常好的,Apple 设备之间的剪贴板同步功能(Universal Clipboard)确实非常方便,它可以在 iPhone、iPad 和 Mac 之间无缝传输剪贴板内容,从而大大进步工作效率。
但是,iPhone 怎样和 Windows 剪贴板同步呢?其实方案有很多,有些是通过安装软件来实现,还有一些是通过输入法自带的剪贴板同步功能来实现,比方微信输入法就有剪贴板同步的功能。
本文主要讲的是自己去实现一个单向同步,因为我还没实现双向同步,假如后面有方案我会更新本文。
技能原理
在 iPhone 中有一个叫做 快捷指令 的APP,这个APP提供了一些方法去操作你的 iPhone ,通过里面提供的API可以创建一个主动化脚本,这个脚本就可以获取剪贴板内容,既然能够获取到 iPhone 的剪贴板内容,那么就可以将剪贴板内容通过 快捷指令 的另一个API发送给 Windows 体系,然后在 Windows 体系通过一个 Python 脚本来实时监控 iPhone 的剪贴板更新,获取到新的剪贴板内容则主动设置 Windows 剪贴板。
捷径指令
快捷指令的截图如下:
创建个人主动化,设定一个触发条件,触发条件是当打开大概关闭某个APP的时间,执行这个主动化脚本。
主动化脚本的顺序是:
- 获取剪贴板;
- 对剪贴板的内容进行 URL 编码;
- 利用文本将局域网的 HTTP接口 和颠末 URL编码的剪贴板内容 进行拼接;
- 利用 获取URL内容 这个API将剪贴板内容发送给局域网API;
- 竣事。
Windows Python脚本
在本地开启一个 php 服务器,通过一个简朴的 php 脚本来保存剪贴板的内容。
- <?php
- $content = $_GET['content'];
- file_put_contents('./content.txt', $content);
- echo '<h1>OK</h1>';
复制代码 比方在本地服务器 clipboard 目录下创建 index.php 将上面代码复制进去。
快捷指令发送数据过来的时间,就会将剪贴板内容保存在 content.txt 里面。
然后本地开启 Python 脚本去循环读取这个 content.txt 是否有新内容,假如有则设置到剪贴板。
clipboard.py
- import requests
- import time
- import pyperclip
- import tkinter as tk
- from tkinter import messagebox
- def fetch_content(url):
- try:
- response = requests.get(url)
- response.raise_for_status()
- response.encoding = 'utf-8'
- return response.text
- except requests.RequestException as e:
- print(f"Error fetching content: {e}")
- return None
- def show_floating_notification(message):
- # 创建一个透明窗口靠近鼠标指针
- root = tk.Tk()
- root.overrideredirect(True) # 去掉窗口边框
- root.attributes("-topmost", True) # 窗口置顶
- root.attributes("-alpha", 0.8) # 设置透明度
- root.geometry(f"220x30+{root.winfo_pointerx()}+{root.winfo_pointery()}") # 设置窗口大小和位置
-
- label = tk.Label(root, text=message, bg="#eee", fg="#666", font=("Arial", 11))
- label.pack(expand=True, fill='both')
-
- # 自动关闭窗口
- root.after(2000, root.destroy) # 3秒后自动关闭窗口
- root.mainloop()
- def monitor_content(url, interval=1):
- last_content = None
- while True:
- current_content = fetch_content(url)
- if current_content is not None and current_content != last_content:
- print("New content detected:")
- print(current_content)
- pyperclip.copy(current_content) # 将内容复制到剪贴板
- print("Content has been copied to the clipboard.")
- show_floating_notification("来自iPhone13的剪贴板内容")
- last_content = current_content
- time.sleep(interval) # 间隔指定的秒数再检查
- if __name__ == "__main__":
- url = "http://192.168.2.112/clipboard/content.txt"
- monitor_content(url)
复制代码 别的说明
本方案仅为初次实行和研究是可行的,可进行深度优化,会变得更好用。
作者
TANKING
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |