#clipboard #winapi #events #windows

clipboard-master

简单的剪切板更改监控工具包

12个版本 (6 个稳定版)

4.0.0-beta.62024年6月4日
4.0.0-beta.52024年2月6日
4.0.0-beta.42024年1月17日
3.1.3 2021年11月23日
0.1.0 2017年3月17日

#74 in Windows API

Download history 96/week @ 2024-04-29 73/week @ 2024-05-06 63/week @ 2024-05-13 65/week @ 2024-05-20 68/week @ 2024-05-27 169/week @ 2024-06-03 80/week @ 2024-06-10 60/week @ 2024-06-17 94/week @ 2024-06-24 82/week @ 2024-07-01 50/week @ 2024-07-08 91/week @ 2024-07-15 83/week @ 2024-07-22 130/week @ 2024-07-29 56/week @ 2024-08-05 88/week @ 2024-08-12

每月下载量367
用于 2 crates

MIT 许可证

23KB
401

clipboard-master

Crates.io Docs.rs

剪切板监控库。

支持的平台

  • Windows - 使用模拟窗口接收剪切板更改时的消息;
  • Linux - 使用 x11_clipboard
  • MacOS - 由于没有事件通知,使用轮询通过 NSPasteboard::changeCount

Clipboard Master Library

本项目导出 Master 结构体,提供了简单处理剪切板更新的方法。

示例

extern crate clipboard_master;

use clipboard_master::{Master, ClipboardHandler, CallbackResult};

use std::io;

struct Handler;

impl ClipboardHandler for Handler {
    fn on_clipboard_change(&mut self) -> CallbackResult {
        println!("Clipboard change happened!");
        CallbackResult::Next
    }

    fn on_clipboard_error(&mut self, error: io::Error) -> CallbackResult {
        eprintln!("Error: {}", error);
        CallbackResult::Next
    }
}

fn main() {
    let mut master = Master::new(Handler).expect("create new monitor");

    let shutdown = master.shutdown_channel();
    std::thread::spawn(move || {
        std::thread::sleep(core::time::Duration::from_secs(1));
        println!("I did some work so time to finish...");
        shutdown.signal();
    });
    //Working until shutdown
    master.run().expect("Success");
}

依赖关系

~0–12MB
~102K SLoC