Использование C# для управления мультимедиа и томами приложений - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь создать свою собственную панель микшера, и теперь аппаратная и программная сторона связи работает, и все, что мне нужно, это управлять мультимедиа на моем компьютере, используя это. Как мне управлять мультимедиа и такими вещами, как громкость на компьютере с окном, программа, которую я сделал, написана en C# и через последовательный порт связывается с моей микшерной платой на основе Arduino. Я искал, но не могу найти много информации об управлении мультимедиа с помощью C# или регулятора громкости. В стандартных библиотеках C# этого, похоже, нет ничего.

Я хочу, чтобы он мог пропускать песни или go назад и сделайте стандартное управление мультимедиа, как это. Я также получил различные ползунки для громкости и хочу управлять громкостью различных приложений, используя это.

1 Ответ

0 голосов
/ 06 апреля 2020

Для управления мультимедиа вы можете использовать виртуальную клавиатуру, подключив DLL-библиотеку user32 для виртуального нажатия клавиш управления мультимедиа. Таким образом, вы можете делать такие вещи, как отключение звука и переход к следующей дорожке, но регулятор громкости ограничен простым управлением громкостью основного устройства, как и обычной клавиатурой. Ниже приведен простой код, описывающий, как это сделать.

public class VirtualMediaController
{
    internal enum VirtualKeyCodes
        : uint
    {
        VOLUME_MUTE = 0xAD,
        VOLUME_DOWN = 0xAE,
        VOLUME_UP = 0xAF,
        NEXT_TRACK = 0xB0,
        PREVIOUS_TRACK = 0xB1,
        STOP = 0xB2,
        PLAY_PAUSE = 0xB3,
        LAUNCH_MEDIA = 0xB5,
    }

    [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    internal static extern void keybd_event(uint bVk, uint bScan, uint dwFlags, uint dwExtraInfo);

    internal static void SendKey(VirtualKeyCodes virtualKeyCode)
    {
        keybd_event((uint)virtualKeyCode, 0, 0, 0);
    }

    public static void Mute()
    {
        SendKey(VirtualKeyCodes.VOLUME_MUTE);
    }

    public static void VolumeDown()
    {
        SendKey(VirtualKeyCodes.VOLUME_DOWN);
    }

    public static void VolumeUp()
    {
        SendKey(VirtualKeyCodes.VOLUME_UP);
    }

    public static void NextTrack()
    {
        SendKey(VirtualKeyCodes.NEXT_TRACK);
    }

    public static void PreviousTrack()
    {
        SendKey(VirtualKeyCodes.PREVIOUS_TRACK);
    }

    public static void Stop()
    {
        SendKey(VirtualKeyCodes.STOP);
    }

    public static void PlayPause()
    {
        SendKey(VirtualKeyCodes.PLAY_PAUSE);
    }

    public static void LaunchMedia()
    {
        SendKey(VirtualKeyCodes.LAUNCH_MEDIA);
    }
}

Для более точного управления громкостью вам придется использовать библиотеку или создать библиотеку, которая будет подключаться к windows API микшера. CoreAudio Github является примером такой библиотеки и может использоваться как прыжок с точкой. Он может использоваться для управления устройствами вывода звука и дает вам больше контроля над звуком, чем просто использование визуальной клавиатуры для клавиш мультимедиа (увеличение громкости, уменьшение громкости и отключение звука). Таким образом, вы также можете получить информацию о текущем уровне громкости и отключении звука. Но этот тип библиотеки не даст вам функциональности play / pause и stop, поэтому комбинация обоих вариантов является наилучшей.

...