#clipboard #winapi #format-time #windows

no-std clipboard-win

Provides simple way to interact with Windows clipboard

67 releases (stable)

5.4.0 Jul 7, 2024
5.3.0 Mar 14, 2024
5.0.0 Nov 22, 2023
4.5.0 Jan 8, 2023
0.9.3 Jul 16, 2015

#3 in Windows APIs

Download history 112485/week @ 2024-07-27 109772/week @ 2024-08-03 104490/week @ 2024-08-10 107048/week @ 2024-08-17 114434/week @ 2024-08-24 116333/week @ 2024-08-31 104076/week @ 2024-09-07 104908/week @ 2024-09-14 119623/week @ 2024-09-21 132218/week @ 2024-09-28 118956/week @ 2024-10-05 122797/week @ 2024-10-12 128372/week @ 2024-10-19 125131/week @ 2024-10-26 136290/week @ 2024-11-02 101383/week @ 2024-11-09

515,055 downloads per month
Used in 1,661 crates (44 directly)

BSL-1.0 license

77KB
1.5K SLoC

clipboard-win

Build Crates.io Docs.rs

This crate provide simple means to operate with Windows clipboard.

Note keeping Clipboard around:

In Windows Clipboard opens globally and only one application can set data onto format at the time.

Therefore as soon as operations are finished, user is advised to close Clipboard.

Clipboard

All read and write access to Windows clipboard requires user to open it.

Usage

Manually lock clipboard

use clipboard_win::{Clipboard, formats, Getter, Setter};

const SAMPLE: &str = "MY loli sample ^^";

let _clip = Clipboard::new_attempts(10).expect("Open clipboard");
formats::Unicode.write_clipboard(&SAMPLE).expect("Write sample");

let mut output = String::new();

assert_eq!(formats::Unicode.read_clipboard(&mut output).expect("Read sample"), SAMPLE.len());
assert_eq!(output, SAMPLE);

//Efficiently re-use buffer ;)
output.clear();
assert_eq!(formats::Unicode.read_clipboard(&mut output).expect("Read sample"), SAMPLE.len());
assert_eq!(output, SAMPLE);

//Or take the same string twice?
assert_eq!(formats::Unicode.read_clipboard(&mut output).expect("Read sample"), SAMPLE.len());
assert_eq!(format!("{0}{0}", SAMPLE), output);

Simplified API

use clipboard_win::{formats, get_clipboard, set_clipboard};

let text = "my sample ><";

set_clipboard(formats::Unicode, text).expect("To set clipboard");
//Type is necessary as string can be stored in various storages
let result: String = get_clipboard(formats::Unicode).expect("To set clipboard");
assert_eq!(result, text)

Dependencies