inital commit
This commit is contained in:
56
Program.cs
Normal file
56
Program.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
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 <playpause|next|previous>");
|
||||
return;
|
||||
}
|
||||
|
||||
var command = args[0].ToLowerInvariant();
|
||||
|
||||
using (var mediaManager = new MediaManager())
|
||||
{
|
||||
mediaManager.Start();
|
||||
|
||||
// MediaManager.CurrentMediaSessions is a Dictionary<string, MediaSession>
|
||||
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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user