设置
  • 日夜间
    随系统
    浅色
    深色
  • 主题色

IT之家学院:将Win10任务栏改造为媒体控制栏

2017/6/3 16:55:12 来源:IT之家 作者:技术菌座子狮 责编:仲平
感谢IT之家网友 技术菌座子狮 的线索投递!

感谢IT之家网友 技术菌座子狮 的投稿

先上图:

本教程将在Windows任务栏上加入媒体控制快捷方式并在Cortana搜索框里显示当前播放的曲名。本教程分为两个部分:小白教程和高级教程。

FBI Warning:本教程采用倒叙的叙述方式(先高级篇后小白篇)。

高级篇

一、快捷媒体控制

所需工具:Visual Studio 2017

1.先确保您的VS安装了.NET桌面开发组件。

2.新建一个Visual C#控制台应用,项目命名为MediaCtrl

3.加入using引入

usingSystem;

usingSystem.Diagnostics;

usingSystem.Runtime.InteropServices;

usingSystem.Windows.Forms;


4.在Program类里引入需要用到的Win32 API

[DllImport("user32.dll",EntryPoint="keybd_event",SetLastError=true)]

publicstaticexternvoidkeybd_event(KeysbVk,bytebScan,uintdwFlags,uintdwExtraInfo);


注释:Windows提供了一个模拟键盘API函数keybd_event(),使用该函数可以相应的屏蔽键盘的动作。

5.在Main主函数里进行命令处理

static void Main(string[]args){

if(args.Length>0){

switch(args[0]){

case "p"://播放-暂停

keybd_event(Keys.MediaPlayPause,0,0,0);

keybd_event(Keys.MediaPlayPause,0,2,0);

break;

case "c"://桌面歌词Ctrl+Alt+D

keybd_event(Keys.ControlKey,0,0,0);

keybd_event(Keys.Menu,0,0,0);

keybd_event(Keys.D,0,0,0);

keybd_event(Keys.ControlKey,0,2,0);

keybd_event(Keys.Menu,0,2,0);

keybd_event(Keys.D,0,2,0);

break;

case "next"://下一曲

keybd_event(Keys.MediaNextTrack,0,0,0);

keybd_event(Keys.MediaNextTrack,0,2,0);

break;

case "pre"://上一曲

keybd_event(Keys.MediaPreviousTrack,0,0,0);

keybd_event(Keys.MediaPreviousTrack,0,2,0);

break;

default:

break;

}

}


注释:模拟一次键盘按键要调用两次keybd_event方法,第三个参数分别为0和2,这分别代表按键的按下和松开。桌面歌词发送的是Ctrl+Alt+D三个按键,这是网易云音乐(桌面版)的默认全局快捷键,大家可以自行更改适配不同的音乐软件

6.生成项目

7.编写快捷方式生成脚本

在生成项目的Debug目录里新建一个install.vbs文件,加入以下内容:

注释:oShellLink.IconLocation是快捷方式图标的位置,可以指向ico图标或dll里的图标资源。可以从阿里矢量图标库里下载你所需要的图标并转化为ico格式,所以脚本和下图中的ResDll.dll包含着图标资源,大家可以用ico图标代替。

8.双击运行vbs文件,桌面上会生成四个快捷方式

9.将这四个快捷方式逐个拖动到任务栏上即可。(完成后桌面上的快捷方式可以删除)

二、Cortana搜索框实时显示当前曲目

FBI Warning:本节涉及大量Win32 API编程以及Windows窗体工作机制。由于代码过多本节不直接贴出代码,只讲实现原理。觉得困难请跳转至下面的小白篇。

之家的一篇文章提到过利用修改注册表修改小娜搜索框里的文本《Win10秘笈:让Cortana搜索栏显示你爱听的话》,这种方法有一个致命缺点:更改后的文本不能实时显示,只有重启任务管理器才生效。所以本教程使用另一种方法——Spy++大法好。

Spy++是一个基于Win32的实用工具,它提供系统的进程、线程、窗口和窗口消息的图形视图。使用Spy++可以执行下列操作:显示系统对象(包括进程、线程和窗口)之间关系的图形树。搜索指定的窗口、线程、进程或消息。查看选定的窗口、线程、进程或消息的属性。

利用Spy++的窗口定位,将靶向定位在小娜文本框上,得到窗口句柄。

在C# Form程序中调用Win32 API里的FindWindow方法获得小娜搜索框的窗口句柄,再调用SendMessage方法向搜索框里的Static控件发送SET_TEXT消息即可更改小娜搜索框里的文本。

打开网易云音乐(桌面版),在Spy++中浏览所有窗口,会发现有一个窗口标题就是当前播放的曲名。

在程序中用FindWindow方法获得这个窗口的句柄,再调用SendMessage方法向搜窗口发送GET_TEXT消息即可获得当前播放的曲名。项目Github点此

小白篇

不会写代码的小白可以直接使用已经生成的工程,点此下载

解压得到四个文件。

这里的CortanaMusicUpdate.exe就是负责实时更新小娜文本框的程序,ResDll.dll是图标库(不喜欢默认图标的自己找图标,最后要ico格式的、ico格式的、ico格式的)。

双击install.vbs在桌面生成快捷方式,快捷方式右键-属性可以替换自己的图标。

注:CortanaMusicUpdate.exe仅支持网易云音乐(桌面版)。

最后再次附上效果图自己的桌面(标配的软媒魔方和软媒时间)。

广告声明:文内含有的对外跳转链接(包括不限于超链接、二维码、口令等形式),用于传递更多信息,节省甄选时间,结果仅供参考,IT之家所有文章均包含本声明。

软媒旗下网站: IT之家 辣品 - 超值导购,优惠券 最会买 - 返利返现优惠券 iPhone之家 Win7之家 Win10之家 Win11之家

软媒旗下软件: 魔方 酷点桌面 Win7优化大师 Win10优化大师 软媒手机APP应用