#media #windows #winrt #gsmtc

win-gsmtc

Windows.Media.Control命名空间(全局系统媒体传输控制 - GSMTC)的包装器

1 个不稳定版本

0.1.0 2023年4月30日

#175Windows API

每月 26 次下载
yandex-music-discord-rpc 中使用

MIT/Apache

41KB
757

win-gsmtc

该库是Windows.Media.Control命名空间(也称为GlobalSystemMediaTransportControls - GSMTC)的包装器。它使用tokio来管理内部工作进程,以提供更新。

示例

use gsmtc::{ManagerEvent::*, SessionUpdateEvent::*};

let mut rx = gsmtc::SessionManager::create().await?;

while let Some(evt) = rx.recv().await {
    match evt {
        SessionCreated {
            session_id,
            mut rx,
            source,
        } => {
            println!("Created session: {{id={session_id}, source={source}}}");
            tokio::spawn(async move {
                while let Some(evt) = rx.recv().await {
                    match evt {
                        Model(model) => {
                            println!("[{session_id}/{source}] Model updated: {model:#?}")
                        }
                        Media(model, image) => println!(
                            "[{session_id}/{source}] Media updated: {model:#?} - {image:?}"
                        ),
                    }
                }
                println!("[{session_id}/{source}] exited event-loop");
            });
        }
        SessionRemoved { session_id } => println!("Session {{id={session_id}}} was removed"),
        CurrentSessionChanged {
            session_id: Some(id),
        } => println!("Current session: {id}"),
        CurrentSessionChanged { session_id: None } => println!("No more current session"),
    }
}

依赖关系

~133MB
~2M SLoC