C#、.NET迷你音乐播放器(改进版)
承接之前的博文,征集了之前博友们的意见,本人做了一些修改,添加了一些功能,也完善了一下现有的功能,
1、之前有调节音量,新增了组合键实现上一曲下一曲,空格播放暂停。
2、增加了换肤功能,当然皮肤图片博友们可以自行更改
3、新增的皮肤中控制按钮使用的Metro风格
4、设置FormBorderStyle为none后,相应的标题栏功能没了,修改后增加了点击任务最小化窗体,只需要引用一下类库
[DllImport( "user32.dll" , EntryPoint = "GetWindowLong" , CharSet = CharSet.Auto)] //管理FormBorderStyle:none public static extern int GetWindowLong(HandleRef hWnd, int nIndex); //点击任务栏最大化最小化程序 [DllImport( "user32.dll" , EntryPoint = "SetWindowLong" , CharSet = CharSet.Auto)] public static extern IntPtr SetWindowLong(HandleRef hWnd, int nIndex, int dwNewLong); |
然后再Load事件中添加如下代码
//点击任务栏图标实现最大化最小化 int WS_SYSMENU = 0x00080000; // 系统菜单 int WS_MINIMIZEBOX = 0x20000; // 最大最小化按钮 int windowLong = (GetWindowLong( new HandleRef( this , this .Handle), -16)); SetWindowLong( new HandleRef( this , this .Handle), -16, windowLong | WS_SYSMENU | WS_MINIMIZEBOX); |
5、增加了进程检测,同时只能运行一个程序,避免了多次误点打开多个播放器的问题。
//处理开启多个程序,检测进程,只允许一个应用程序运行 string mName = Process.GetCurrentProcess().MainModule.ModuleName; string pName = Path.GetFileNameWithoutExtension(mName); Process[] pro = Process.GetProcessesByName(pName); if (pro.Length > 1) { //MessageBox.Show("程序已经在运行,无需重复运行。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); this .Dispose(); Application.ExitThread(); } |
这段代码同样在Load事件中
别的都是小改,我也记不清了,文章底部附上源码,供博友们学习。
VS2008版:
好多博友说用VS2010打开出问题,反正我在我这没问题。下面是我用VS2010转换的,也没问题。如果用Vs2010的,你们就下载这个吧
申明一下:本人现在不从事软件开发了,所以加我QQ的就免了吧,很久没碰了,现在都忘了,非常抱歉没能帮到大家……(2013.3.2)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求
· NetPad:一个.NET开源、跨平台的C#编辑器
· PowerShell开发游戏 · 打蜜蜂