diff --git a/Cargo.lock b/Cargo.lock index 1941873..7b2c799 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,18 +4,18 @@ version = 3 [[package]] name = "proc-macro2" -version = "1.0.56" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b63bdb0cd06f1f4dedf69b254734f9b45af66e4a031e42a7480257d9898b435" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] [[package]] name = "quote" -version = "1.0.26" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -33,9 +33,9 @@ dependencies = [ [[package]] name = "unicode-ident" -version = "1.0.8" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "windows" @@ -72,9 +72,9 @@ dependencies = [ [[package]] name = "windows-targets" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2522491fbfcd58cc84d47aeb2958948c4b8982e9a2d8a2a35bbaed431390e7" +checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -94,42 +94,42 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" +checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" [[package]] name = "windows_aarch64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" +checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" [[package]] name = "windows_i686_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" +checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" [[package]] name = "windows_i686_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" +checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" [[package]] name = "windows_x86_64_gnu" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" +checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" +checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" [[package]] name = "windows_x86_64_msvc" -version = "0.42.1" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" +checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" diff --git a/examples/listen.rs b/examples/listen.rs index 0a257e9..0b7d95a 100644 --- a/examples/listen.rs +++ b/examples/listen.rs @@ -1,11 +1,17 @@ -use windows::Win32::Media::Audio::{Endpoints::{IAudioEndpointVolumeCallback, IAudioEndpointVolumeCallback_Impl}, AUDIO_VOLUME_NOTIFICATION_DATA}; +use windows::Win32::Media::Audio::{ + Endpoints::{IAudioEndpointVolumeCallback, IAudioEndpointVolumeCallback_Impl}, + AUDIO_VOLUME_NOTIFICATION_DATA, +}; use windows_volume_control::AudioController; #[windows::core::implement(IAudioEndpointVolumeCallback)] struct VolumeChangeCallback; impl IAudioEndpointVolumeCallback_Impl for VolumeChangeCallback { - fn OnNotify(&self, pnotify: *mut AUDIO_VOLUME_NOTIFICATION_DATA) -> ::windows::core::Result<()> { + fn OnNotify( + &self, + pnotify: *mut AUDIO_VOLUME_NOTIFICATION_DATA, + ) -> ::windows::core::Result<()> { unsafe { println!("volume changed: {}", (*pnotify).fMasterVolume); } @@ -20,13 +26,17 @@ fn main() { controller.GetDefaultAudioEnpointVolumeControl(); controller.GetAllProcessSessions(); - let session = controller.get_session_by_name("master".to_string()).unwrap(); + let session = controller + .get_session_by_name("master".to_string()) + .unwrap(); if let Some(session_endpoint_volume) = session.getAudioEndpointVolume() { let volume_callback: IAudioEndpointVolumeCallback = VolumeChangeCallback {}.into(); - session_endpoint_volume.RegisterControlChangeNotify(&volume_callback).unwrap(); + session_endpoint_volume + .RegisterControlChangeNotify(&volume_callback) + .unwrap(); println!("Initialised audio event listener for session 'master'"); - loop {}; + loop {} } } -} \ No newline at end of file +} diff --git a/examples/main.rs b/examples/main.rs index c2c3530..db7f082 100644 --- a/examples/main.rs +++ b/examples/main.rs @@ -1,5 +1,3 @@ -use std::time::Duration; - use windows_volume_control::AudioController; fn main() { @@ -8,8 +6,9 @@ fn main() { controller.GetSessions(); controller.GetDefaultAudioEnpointVolumeControl(); controller.GetAllProcessSessions(); - let test = controller.get_all_session_names(); + let sesstion_names = controller.get_all_session_names(); + println!("{:?}", sesstion_names); let master_session = controller.get_session_by_name("master".to_string()); - println!("{:?}",master_session.unwrap().getVolume()); + println!("{:?}", master_session.unwrap().getVolume()); } } diff --git a/src/lib.rs b/src/lib.rs index c6df593..eac28eb 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,7 @@ +#![allow(non_snake_case)] + use session::{ApplicationSession, EndPointSession, Session}; +use std::process::exit; use windows::{ core::Interface, Win32::{ @@ -8,13 +11,15 @@ use windows::{ IMMDeviceEnumerator, ISimpleAudioVolume, MMDeviceEnumerator, }, System::{ - Com::{CoCreateInstance, CoInitializeEx, CLSCTX_INPROC_SERVER, COINIT_MULTITHREADED, CLSCTX_ALL, COINIT_APARTMENTTHREADED}, + Com::{ + CoCreateInstance, CoInitializeEx, CLSCTX_ALL, CLSCTX_INPROC_SERVER, + COINIT_APARTMENTTHREADED, COINIT_MULTITHREADED, + }, ProcessStatus::K32GetProcessImageFileNameA, Threading::{OpenProcess, PROCESS_QUERY_INFORMATION, PROCESS_VM_READ}, }, }, }; -use std::process::exit; mod session; @@ -26,7 +31,7 @@ pub struct AudioController { pub enum CoinitMode { MultiTreaded, - ApartmentThreaded + ApartmentThreaded, } impl AudioController { @@ -34,8 +39,8 @@ impl AudioController { let mut coinit: windows::Win32::System::Com::COINIT = COINIT_MULTITHREADED; if let Some(x) = coinit_mode { match x { - CoinitMode::ApartmentThreaded => {coinit = COINIT_APARTMENTTHREADED}, - CoinitMode::MultiTreaded => {coinit = COINIT_MULTITHREADED} + CoinitMode::ApartmentThreaded => coinit = COINIT_APARTMENTTHREADED, + CoinitMode::MultiTreaded => coinit = COINIT_MULTITHREADED, } } CoInitializeEx(None, coinit).unwrap_or_else(|err| { diff --git a/src/session.rs b/src/session.rs index 5b870af..4f35b62 100644 --- a/src/session.rs +++ b/src/session.rs @@ -1,5 +1,5 @@ -use windows::Win32::Foundation::BOOL; use windows::core::GUID; +use windows::Win32::Foundation::BOOL; use windows::Win32::Media::Audio::Endpoints::IAudioEndpointVolume; use windows::Win32::Media::Audio::ISimpleAudioVolume; @@ -16,7 +16,7 @@ pub trait Session { pub struct EndPointSession { simple_audio_volume: IAudioEndpointVolume, name: String, - guid: GUID + guid: GUID, } impl EndPointSession { pub fn new(simple_audio_volume: IAudioEndpointVolume, name: String) -> Self { @@ -28,7 +28,7 @@ impl EndPointSession { Self { simple_audio_volume: simple_audio_volume, name: name, - guid: guid + guid: guid, } } } @@ -61,7 +61,7 @@ impl Session for EndPointSession { .SetMute(mute, &self.guid) .unwrap_or_else(|err| { eprintln!("ERROR: Couldn't set mute: {err}"); - }); + }); } unsafe fn getMute(&self) -> bool { self.simple_audio_volume @@ -86,7 +86,7 @@ impl ApplicationSession { eprintln!("ERROR: Couldn't generate GUID {err}"); exit(1); }); - + Self { simple_audio_volume: simple_audio_volume, name: name, @@ -123,7 +123,7 @@ impl Session for ApplicationSession { .SetMute(mute, &self.guid) .unwrap_or_else(|err| { eprintln!("ERROR: Couldn't set mute: {err}"); - }); + }); } unsafe fn getMute(&self) -> bool { self.simple_audio_volume