本文概述
- 实施中
- 完成课程
实施中 首先, 我们需要在项目的主类中包含以下名称空间。
using System.Runtime.InteropServices;
【如何使用C#从Windows播放,暂停音乐或转到下一首和上一首曲目(适用于所有Windows音乐播放器)】然后, 我们将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 trackpublic const int VK_MEDIA_PLAY_PAUSE = 0xB3;
// code to play or pause a songpublic const int VK_MEDIA_PREV_TRACK = 0xB1;
// code to jump to prev track
要模拟事件, 请使用以下代码行(每行的功能有所不同, 队长很明显):
// Jump to previous trackkeybd_event(VK_MEDIA_PREV_TRACK, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
// Play or Pause musickeybd_event(VK_MEDIA_PLAY_PAUSE, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
// Jump to next trackkeybd_event(VK_MEDIA_NEXT_TRACK, 0, KEYEVENTF_EXTENTEDKEY, IntPtr.Zero);
keybd_event函数期望将要模拟的密钥代码作为第一个参数。现在, 你只需要在表单中添加几个按钮, 并将这些功能附加到单击按钮的事件上即可。
最终的实现方式应该像超级按钮一样工作, 以下gif显示了该应用程序与Spotify音乐配合使用。你可能知道此应用程序没有任何Spotify代码或其他任何内容, 它只会在系统上模拟键盘事件。因此, 此功能适用于Windows的任何音乐播放器。
文章图片
完成课程 添加按钮时, 你的班级应如下所示:
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);
}}}
玩得开心 !
推荐阅读
- 如何使用C#.NET以编程方式清除回收站
- 如何下载github存储库的单个文件夹
- XML文档中的![CDATA []]节点有什么作用
- 如何在Windows中使用命令提示符执行symfony 3命令
- 如何解决Windows的git(Powershell和GitHub应用程序)中的”文件名过长”错误
- 如何使用FOSOAuthServerBundle从数据库中清除所有过期的令牌
- 如何使用Doctrine和Symfony 3实现全文搜索(MySql)
- 如何在Symfony 2.8中使用FOSUserBundle实现用户系统
- 如何将Chrome Inspect Tools主题更改为Dark