6 releases
0.2.0 | Jul 24, 2021 |
---|---|
0.1.4 | Jan 12, 2021 |
0.1.1 | Dec 16, 2020 |
#110 in Windows APIs
33 downloads per month
Used in 2 crates
47KB
1K
SLoC
Windy
A Windows strings library that supports AString (ANSI string) and WString (Unicode string).
Features
- ANSI string(AString)
- Wide string(WString)
- AnsiString(ANSI_STRING)
- UnicodeString(UNICODE_STRING)
- Interconversion between AString, WString and String.
- no_std support
- Macros support
Installation
Add the following lines to your Cargo.toml:
[dependencies]
windy = "0.2.0"
Example
An example of parsing the outputs of cmd.exe.
use windy::AString;
use std::process::Command;
fn main() {
let o = Command::new("cmd")
.args(&["/c", "ThisCommandDoesNotExist"])
.output().unwrap();
let (stdout, stderr) = unsafe {
(
AString::new_unchecked(o.stdout),
AString::new_unchecked(o.stderr)
)
};
println!("stdout: {:?}", stdout);
println!("stderr: {:?}", stderr);
}
no_std support
If you don't want to use std, use --no-default-features
.
AString and WString are not available when no_std.
Macros support
windy-macros to convert a UTF-8 string to WString or AString at compile time.
[dependencies]
windy = "0.2.0"
windy-macros = "0.1.1"
Example
use windy::WStr;
use windy_macros::wstr;
#[allow(non_snake_case)]
#[link(name = "user32")]
extern "system" {
pub fn MessageBoxW(
hWnd: *mut c_void,
lpText: *const u16,
lpCaption: *const u16,
uType: u32,
) -> i32;
}
fn main() {
let text: &WStr = wstr!("World");
let caption: &WStr = wstr!("CaptionW");
unsafe {
MessageBoxW(0 as _, text.as_ptr(), caption.as_ptr(), 0);
}
}
License
This software is released under the MIT or Apache-2.0 License, see LICENSE-MIT or LICENSE-APACHE.