using System; using Windows.Media.Control; using WindowsMediaController; namespace MediaControl { class Program { static void Main(string[] args) { // We expect one argument: playpause, next, or previous if (args.Length == 0) { Console.WriteLine("Usage: MediaControl.exe "); return; } var command = args[0].ToLowerInvariant(); using (var mediaManager = new MediaManager()) { mediaManager.Start(); // MediaManager.CurrentMediaSessions is a Dictionary var sessions = mediaManager.CurrentMediaSessions; foreach (var sessionKvp in sessions) { var session = sessionKvp.Value; // Filter so only sessions with "spotify" in the Id get commands // You might need to do a more exact match depending on the session's actual Id: // e.g., if (session.Id?.Equals("Spotify.exe", StringComparison.OrdinalIgnoreCase) == true) if (!session.Id?.ToLower().Contains("spotify") == true) continue; // skip non-Spotify sessions var controlSession = session.ControlSession; if (controlSession == null) continue; switch (command) { case "playpause": controlSession.TryTogglePlayPauseAsync(); break; case "next": controlSession.TrySkipNextAsync(); break; case "previous": controlSession.TrySkipPreviousAsync(); break; } } } } } }