我是靠谱客的博主 大意电话,最近开发中收集的这篇文章主要介绍Rust 调用 Windows API,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

winapi 依赖包

Cargo.toml 文件内容如下:

[package]
name = "winapi"
version = "0.1.0"
edition = "2018"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
[target.'cfg(windows)'.dependencies]
winapi = { version = "0.3", features = ["winuser"] }

示例程序:

#[cfg(windows)]
extern crate winapi;
use std::io::Error;

#[cfg(windows)]
fn print_message(msg: &str) -> Result<i32, Error> {
    use std::ffi::OsStr;
    use std::iter::once;
    use std::os::windows::ffi::OsStrExt;
    use std::ptr::null_mut;
    use winapi::um::winuser::{MessageBoxW, MB_OK};
    let wide: Vec<u16> = OsStr::new(msg).encode_wide().chain(once(0)).collect();
    let ret = unsafe { MessageBoxW(null_mut(), wide.as_ptr(), wide.as_ptr(), MB_OK) };
    if ret == 0 {
        Err(Error::last_os_error())
    } else {
        Ok(ret)
    }
}
#[cfg(not(windows))]
fn print_message(msg: &str) -> Result<(), Error> {
    println!("{}", msg);
    Ok(())
}
fn main() {
    print_message("Hello, world!你好!").unwrap();
}

运行一下,结果如下:

非常 OK! 

 

最后

以上就是大意电话为你收集整理的Rust 调用 Windows API的全部内容,希望文章能够帮你解决Rust 调用 Windows API所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部