clipboard-win ==================== ![Build](https://github.com/DoumanAsh/clipboard-win/workflows/Rust/badge.svg) [![Crates.io](https://img.shields.io/crates/v/clipboard-win.svg)](https://crates.io/crates/clipboard-win) [![Docs.rs](https://docs.rs/clipboard-win/badge.svg)](https://docs.rs/clipboard-win/*/x86_64-pc-windows-msvc/clipboard_win/) This crate provide simple means to operate with Windows clipboard. # Note keeping Clipboard around: In Windows [Clipboard](struct.Clipboard.html) 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](struct.Clipboard.html). # Clipboard All read and write access to Windows clipboard requires user to open it. # Usage ## Manually lock clipboard ```rust 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 ```rust 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) ```