赞
踩
板条箱windows入门、0.48.0版本示例代码
板条箱windows的文档
板条箱windows的Github仓库、发行页面
访问微软官网下载生成工具,勾选使用 C++ 的桌面开发
之后会自动勾选5个项目
取消勾选以下项目
用于 Windows 的 C++ CMake 工具
测试工具核心功能 - 生成工具
C++ AddressSanitizer
只保留以下两个(SDK版本不用管,Win10或Win11都行,勾什么就留什么,不用自己勾)
MSVC v143 - VS 2022 C++ x64/x86 生成工具
Windows 11 SDK (10.0.22000.0)
安装前必须重启电脑
访问Rust官网下载并安装Rust
运行where rustc
找到.cargo
文件夹
在.cargo
文件夹下新建无后缀文件,文件名为config
,并输入以下内容,保存
[source.crates-io]
registry = "https://github.com/rust-lang/crates.io-index"
replace-with = 'ustc'
[source.ustc]
registry = "git://mirrors.ustc.edu.cn/crates.io-index"
cargo new message-box
cd .\message-box\
cargo add windows
code .
.\message-box\Cargo.toml
,记录当前依赖为windows = "0.48.0"
且无特性features
(后续依赖需要修改)[package]
name = "message-box"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
windows = "0.48.0"
.\message-box\src\main.rs
use
语句use windows;
warning
:warning: unused import: `windows`
,不用管,本来也不用,一会就删了重写Ctrl
,左键单击windows
跳转到文件lib.rs
文件,找到该文件在电脑中的位置use
语句lib.rs
的路径:.\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\windows-0.48.0\src\lib.rs
.\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\windows-0.48.0
windows-rs
在电脑中的位置打开一个带有搜索文件内容
功能的软件,例如ndd
目标目录:.\.cargo\registry\src\mirrors.ustc.edu.cn-61ef6e0cd06fb9b8\windows-0.48.0
查找目标:MessageBoxW
点击全部查找
(把它肠子翻烂,比看demo简单多了,官方demo是大杂烩,根本不知道引用的哪里)
处理搜索结果
readme.md
:无法确认使用了什么特性,跳过。Web/InternetExplorer/impl.rs
fn MessageBoxW
Web/InternetExplorer/mod.rs
pub unsafe fn MessageBoxW
#[doc = "*Required features: `\"Win32_Foundation\"`*"]
UI/WindowsAndMessaging/mod.rs
pub unsafe fn MessageBoxW
#[doc = "*Required features: `\"Win32_UI_WindowsAndMessaging\"`, `\"Win32_Foundation\"`*"]
MessageBoxW
,特性为Win32_UI_WindowsAndMessaging
和Win32_Foundation
UI/Shell/mod.rs
pub unsafe fn ShellMessageBoxW
Grapics/Printing/mod.rs
pub unsafe fn PrinterMessageBoxW
MessageBoxW特性
找到了MessageBoxW
,特性为Win32_UI_WindowsAndMessaging
和Win32_Foundation
修改文件.\message-box\Cargo.toml
[package]
name = "message-box"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies.windows]
version = "0.48.0"
features = [
"Win32_UI_WindowsAndMessaging",
"Win32_Foundation",
]
运行cargo run
,输出了Hello, world!
编辑文件.\message-box\src\main.rs
整段代码手打,全程代码提示,打的最多的就是双冒号。
参考文档:MessageBoxW 函数 (winuser.h) - 微软文档
#![windows_subsystem = "windows"]
use windows::w;
use windows::Win32::UI::WindowsAndMessaging::{MessageBoxW, MB_ICONINFORMATION, MB_OK};
fn main() {
println!("Hello, world!");
unsafe {
MessageBoxW(None, w!("Hello"), w!("World"), MB_ICONINFORMATION | MB_OK);
}
}
运行cargo run
,显示对话框
至此,用Rust(exe160,256字节)实现了vbs(转exe31,232字节)一句话就完成的程序
MsgBox "Hello", vbInformation + vbOKOnly, "World"
cargo build --release
exe文件:.\message-box\target\release\message-box.exe
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。