Как воспроизводить, приостанавливать музыку или переходить к следующей и предыдущей дорожке из окон с помощью C # (действительно для всех музыкальных проигрывателей Windows)

Вы можете использовать этот фрагмент для остановки музыки Windows, да, если вы используете следующий код, вы сможете остановить (или перейти к следующему и предыдущему треку) музыку Windows. Это означает, что на любой активный музыкальный проигрыватель мы будем реагировать на действия. Это возможно благодаря моделированию нажатия клавиш системы с использованием user32.dll и keybd_event функция.

Внедрение

Для начала нам нужно включить следующее пространство имен в основной класс нашего проекта.

using System.Runtime.InteropServices;

Затем мы собираемся импортировать в наш проект user32.dll, этот API позволит нам получить доступ к функции keybd_event, которую мы будем использовать для имитации пары нажатий клавиш в системе. Сразу же создайте метод, используя:

[DllImport("user32.dll")]
public static extern void keybd_event(byte virtualKey, byte scanCode, uint flags, IntPtr extraInfo);

Теперь мы сможем смоделировать ключевые события, которые нам нужны для play-pause-JumpToNextTrack или JumpToPreviousTrack, но нам нужно также объявить в переменных коды ключей, которые мы хотим смоделировать. Просто добавьте следующие переменные в класс (обратите внимание, что они должны быть доступны для всех методов):

public const int KEYEVENTF_EXTENTEDKEY = 1;
public const int KEYEVENTF_KEYUP = 0;
public const int VK_MEDIA_NEXT_TRACK = 0xB0;// code to jump to next track
public const int VK_MEDIA_PLAY_PAUSE = 0xB3;// code to play or pause a song
public const int VK_MEDIA_PREV_TRACK = 0xB1;// code to jump to prev track

Для имитации событий используйте следующие строки кода (каждая строка делает что-то свое, очевидно, капитан):

// Jump to previous track
keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
// Play or Pause music
keybd_event(VK_MEDIA_PLAY_PAUSE, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
// Jump to next track
keybd_event(VK_MEDIA_NEXT_TRACK, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);

keybd_event Функция ожидает в качестве первого параметра код ключа, который будет смоделирован. Теперь вам просто нужно добавить пару кнопок в форму и прикрепить эти функции к событиям нажатия кнопок.

Окончательная реализация должна работать как шарм, на следующем рисунке показано приложение, работающее с музыкой Spotify. Возможно, вы знаете, что это приложение не имеет никакого кода или другого кода, оно будет имитировать только событие клавиатуры в системе. Поэтому эта функция будет работать для любого музыкального плеера для Windows.

Spotify пауза музыки с C #

Завершить урок

Ваш класс должен выглядеть следующим образом при добавлении кнопок:

using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace UniversalSandbox
{
public partial class Form1 : Form
{
public const int KEYEVENTF_EXTENTEDKEY = 1;
public const int KEYEVENTF_KEYUP = 0;
public const int VK_MEDIA_NEXT_TRACK = 0xB0;
public const int VK_MEDIA_PLAY_PAUSE = 0xB3;
public const int VK_MEDIA_PREV_TRACK = 0xB1;
[DllImport("user32.dll")]
public static extern void keybd_event(byte virtualKey, byte scanCode, uint flags, IntPtr extraInfo);
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
keybd_event(VK_MEDIA_PLAY_PAUSE, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
}
private void button2_Click(object sender, EventArgs e)
{
keybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
}
private void button3_Click(object sender, EventArgs e)
{
keybd_event(VK_MEDIA_NEXT_TRACK, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
}
}
}

Повеселись !

Ссылка на основную публикацию
Adblock
detector