1 unstable release
0.1.0 | Apr 30, 2023 |
---|
#202 in Windows APIs
26 downloads per month
Used in yandex-music-discord-rpc
41KB
757 lines
win-gsmtc
This library is a wrapper around the Windows.Media.Control
namespace (aka GlobalSystemMediaTransportControls
- GSMTC).
It uses tokio
to manage internal workers that deliver updates.
Example
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"),
}
}
Dependencies
~133MB
~2M SLoC