6 个版本
0.2.0 | 2021年7月24日 |
---|---|
0.1.4 | 2021年1月12日 |
0.1.1 | 2020年12月16日 |
#97 in Windows API
每月 33 次下载
用于 2 crates
47KB
1K SLoC
Windy
支持 AString (ANSI 字符串) 和 WString (Unicode 字符串) 的 Windows 字符串库。
特性
- ANSI 字符串(AString)
- 宽字符串(WString)
- AnsiString(ANSI_STRING)
- UnicodeString(UNICODE_STRING)
- AString、WString 和 String 之间的相互转换。
- 支持 no_std
- 宏支持
安装
将以下行添加到您的 Cargo.toml 文件中
[dependencies]
windy = "0.2.0"
示例
解析 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
如果您不想使用 std,请使用 --no-default-features
。
在 no_std 下,AString 和 WString 不可用。
宏支持
windy-macros 在编译时将 UTF-8 字符串转换为 WString 或 AString。
[dependencies]
windy = "0.2.0"
windy-macros = "0.1.1"
示例
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);
}
}
许可证
本软件根据 MIT 或 Apache-2.0 许可证发布,请参阅 LICENSE-MIT 或 LICENSE-APACHE。