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.
```rust use gsmtc::{ManagerEvent::, SessionUpdateEvent::};
let mut rx = gsmtc::SessionManager::create().await?;
while let Some(evt) = rx.recv().await { match evt { SessionCreated { sessionid, mut rx, source, } => { println!("Created session: {{id={sessionid}, source={source}}}"); tokio::spawn(async move { while let Some(evt) = rx.recv().await { match evt { Model(model) => { println!("[{sessionid}/{source}] Model updated: {model:#?}") } Media(model, image) => println!( "[{sessionid}/{source}] Media updated: {model:#?} - {image:?}" ), } } println!("[{sessionid}/{source}] exited event-loop"); }); } SessionRemoved { sessionid } => println!("Session {{id={sessionid}}} was removed"), CurrentSessionChanged { sessionid: Some(id), } => println!("Current session: {id}"), CurrentSessionChanged { session_id: None } => println!("No more current session"), } } ```