个性化阅读
专注于IT技术分析

如何使用C#从Windows播放,暂停音乐或转到下一首和上一首曲目(适用于所有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);

现在, 我们可以模拟播放暂停JumpToNextTrack或JumpToPreviousTrack所需的按键事件, 但是我们也需要在in变量中声明要模拟的按键代码。只需在类中添加以下变量(请注意, 所有方法都必须使用它们):

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函数期望将要模拟的密钥代码作为第一个参数。现在, 你只需要在表单中添加几个按钮, 并将这些功能附加到单击按钮的事件上即可。

最终的实现方式应该像超级按钮一样工作, 以下gif显示了该应用程序与Spotify音乐配合使用。你可能知道此应用程序没有任何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);
        }
    }
}

玩得开心 !

赞(0)
未经允许不得转载:srcmini » 如何使用C#从Windows播放,暂停音乐或转到下一首和上一首曲目(适用于所有Windows音乐播放器)

评论 抢沙发

评论前必须登录!