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/)
Provides simple way to interact with Windows clipboard.
# Clipboard
All read and write access to Windows clipboard requires user to open it.
For your convenience you can use [Clipboard](https://docs.rs/clipboard-win/*/x86_64-pc-windows-msvc/clipboard_win/struct.Clipboard.html) struct that opens it at creation
and closes on its drop.
Alternatively you can access all functionality directly through [raw module](https://docs.rs/clipboard-win/*/x86_64-pc-windows-msvc/clipboard_win/raw/index.html).
Below you can find examples of usage.
## Empty clipboard
```rust
use clipboard_win::Clipboard;
fn main() {
Clipboard::new().unwrap().empty();
}
```
## Set and get raw data
```rust
use clipboard_win::formats;
use clipboard_win::Clipboard;
use std::str;
fn main() {
let text = "For my waifu!\0"; //For text we need to pass C-like string
Clipboard::new().unwrap().set(formats::CF_TEXT, text.as_bytes());
let mut buffer = [0u8; 52];
let result = Clipboard::new().unwrap().get(formats::CF_TEXT, &mut buffer).unwrap();
assert_eq!(str::from_utf8(&buffer[..result]).unwrap(), text);
}
```
## Set and get String
```rust
use clipboard_win::Clipboard;
use std::str;
fn main() {
let text = "For my waifu!";
Clipboard::new().unwrap().set_string(text);
let mut result = String::new();
Clipboard::new().unwrap().get_string(&mut result).unwrap();
assert_eq!(text, result);
}
```
## Set and get String shortcuts
```rust
use clipboard_win::{set_clipboard_string, get_clipboard_string};
use std::str;
fn main() {
let text = "For my waifu!";
set_clipboard_string(text).expect("Success");
let result = get_clipboard_string().unwrap();
assert_eq!(text, result);
}
```