#virtual #desktop #accessing #bindings #11 #api #com

winvd

提供访问 Windows 11 虚拟桌面 API 的功能,需要至少 22621 构建版本

28 个版本

0.0.46 2024年1月25日
0.0.45 2023年11月11日
0.0.40 2023年8月31日
0.0.30 2023年2月26日
0.0.3 2020年6月30日

#491 in GUI

Download history 39/week @ 2024-04-01 214/week @ 2024-04-22

每月 208 次下载
用于 tileme

MIT 许可证

87KB
2K SLoC

winvd - Rust 的 Windows 11 虚拟桌面绑定

实现将烦人的 COM API 抽象成简单函数。

https://crates.io/crates/winvd https://github.com/ciantic/VirtualDesktopAccessor/tree/rust/

示例

use winvd::{switch_desktop, get_desktop_count, DesktopEvent, listen_desktop_events};

fn main() {
    // Desktop count
    println!("Desktops: {:?}", get_desktop_count().unwrap());

    // Go to second desktop, index = 1
    switch_desktop(1).unwrap();

    // To listen for changes, use crossbeam, mpsc or winit proxy as a sender
    let (tx, rx) = std::sync::mpsc::channel::<DesktopEvent>();
    let _notifications_thread = listen_desktop_events(tx);

    // Keep the _notifications_thread alive for as long as you wish to listen changes
    std::thread::spawn(|| {
        for item in rx {
            println!("{:?}", item);
        }
    });

    // Wait for keypress
    println!("⛔ Press enter to stop");
    let mut input = String::new();
    std::io::stdin().read_line(&mut input).unwrap();
}

WIP 查看更多示例,请参阅 testbin 源代码 🚀

备注

cargo clean
cargo doc --all-features
cargo build --release --workspace

依赖关系

~137MB
~2.5M SLoC