能进行各种音频格式转换,快进,后退等操作。c#、c++、c语言 都可以。谢谢!!!
2条回答 默认 最新
- 菜鸟的挣扎 2015-12-02 08:54关注
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevComponents.DotNetBar;
using System.Runtime.InteropServices;
using System.IO;
using System.Threading;
using System.Drawing.Imaging;
using Microsoft.Win32;//########################################
//########################################
//########################################
//######///////////////////////////#######
//######编码人:万龙////////////////#######
//######开始时间:2012年5月5日//////#######
//######最近更新时间:2012年5月6日//#######
//######///////////////////////////#######
//########################################
//########################################
//########################################
//########################################namespace MusicPlay
{
public partial class Form1 : Office2007Form
{
#region 窗体出现动画API
private const int AW_HOR_POSITIVE = 0x0001;//自左向右显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_HOR_NEGATIVE = 0x0002;//自右向左显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_VER_POSITIVE = 0x0004;//自顶向下显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志
private const int AW_VER_NEGATIVE = 0x0008;//自下向上显示窗口,该标志可以在滚动动画和滑动动画中使用。使用AW_CENTER标志时忽略该标志该标志
private const int AW_CENTER = 0x0010;//若使用了AW_HIDE标志,则使窗口向内重叠;否则向外扩展
private const int AW_HIDE = 0x10000;//隐藏窗口
private const int AW_ACTIVE = 0x20000;//激活窗口,在使用了AW_HIDE标志后不要使用这个标志
private const int AW_SLIDE = 0x40000;//使用滑动类型动画效果,默认为滚动动画类型,当使用AW_CENTER标志时,这个标志就被忽略
private const int AW_BLEND = 0x80000;//使用淡入淡出效果
[DllImportAttribute("user32.dll")]
private static extern bool AnimateWindow(IntPtr hwnd, int dwTime, int dwFlags);
#endregion
public delegate void DeleCurrentTime(int Currtime);
WLMusicDll.musicClass mp=new WLMusicDll.musicClass();
System.Windows.Forms.Timer timer;
System.Windows.Forms.ToolTip tooltip;
ContextMenuStrip cms;
ContextMenuStrip cmsCur;
string musicName=string.Empty;public Form1() { InitializeComponent(); tool(); timer = new System.Windows.Forms.Timer(); timer.Interval = 1000; timer.Enabled = true; AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE); constMusicLoad(); cmsCur = new ContextMenuStrip(); notifyIcon1.ContextMenuStrip = cmsCur; cmsCur.Items.AddRange(new ToolStripItem[] { new ToolStripMenuItem("显示"), new ToolStripMenuItem("退出") }); foreach (ToolStripMenuItem cmsClick in cmsCur.Items) { if (cmsClick.Text.Equals("显示")) { cmsClick.Click += new EventHandler(cmsClick_Click); } if (cmsClick.Text.Equals("退出")) { cmsClick.Click += new EventHandler(cmsClick_Click1); } } this.listView1.DoubleClick += new EventHandler(listView1_DoubleClick); pictureBox1.DoubleClick += new EventHandler(pictureBox1_DoubleClick); cms = new ContextMenuStrip(); pictureBox2.ContextMenuStrip = cms; cms.Items.AddRange(new ToolStripItem[]{new ToolStripMenuItem("图片保存") ,new ToolStripMenuItem("打开保存文件夹")}); foreach(ToolStripMenuItem tsmi in cms.Items) { if(tsmi.Text.Equals("图片保存")) { tsmi.Click+=new EventHandler(tsmi_Click); } if (tsmi.Text.Equals("打开保存文件夹")) { tsmi.Click +=new EventHandler(tsmi_Click1); } } pictureBox2.DoubleClick += new EventHandler(pictureBox2_DoubleClick); } void cmsClick_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Normal; } void cmsClick_Click1(object sender, EventArgs e) { Application.Exit(); System.Diagnostics.Process process = System.Diagnostics.Process.GetCurrentProcess(); process.Kill(); } void tsmi_Click(object sender, EventArgs e) { SaveFileDialog sfd = new SaveFileDialog(); sfd.Filter = "PNG图片(*.PNG)|*.png"; if (sfd.ShowDialog() == DialogResult.OK) { pictureBox2.BackgroundImage.Save(sfd.FileName, ImageFormat.Png); MessageBox.Show("图片保存成功!"); } } void tsmi_Click1(object sender, EventArgs e) { string dir = AppDomain.CurrentDomain.BaseDirectory+"Pic"; if (Directory.Exists(dir)) { System.Diagnostics.Process.Start(dir); } else { Directory.CreateDirectory(dir); System.Diagnostics.Process.Start(dir); } } void pictureBox2_DoubleClick(object sender, EventArgs e) { if (this.pictureBox2.BackgroundImage != null) { Clipboard.SetImage(this.pictureBox2.BackgroundImage); MessageBox.Show("图片已复制到剪贴板", "", MessageBoxButtons.OK, MessageBoxIcon.Information); string dir = AppDomain.CurrentDomain.BaseDirectory + "Pic"; string pic = dir + "\\" + DateTime.Now.ToString("HH_ss") + ".png"; if (Directory.Exists(dir)) { pictureBox2.BackgroundImage.Save(pic); } else { Directory.CreateDirectory(dir); pictureBox2.BackgroundImage.Save(pic); } } } void pictureBox1_DoubleClick(object sender, EventArgs e) { OpenFileDialog ofd = new OpenFileDialog(); ofd.Filter = "图片格式(*.bmp;*.jpg;*.gif;*.png)|*.bmp;*.jpg;*.gif;*.png"; if(ofd.ShowDialog()==DialogResult.OK) { pictureBox1.Image = new Bitmap(ofd.FileName); } } void tool() { tooltip =new System.Windows.Forms.ToolTip(); tooltip.SetToolTip(upMove,"上一首"); tooltip.SetToolTip(startPlay, "播放"); tooltip.SetToolTip(downMove, "下一首"); } void listView1_DoubleClick(object sender, EventArgs e) { if (this.listView1.Items.Count > 0) { timer.Enabled = true; timer.Start(); mp=new WLMusicDll.musicClass(); mp.FileName = listView1.SelectedItems[0].SubItems[2].Text; listView1.Tag = listView1.SelectedItems[0].Text; progressBarX1.Maximum = mp.Duration; mp.play(); MuscName.Text = MuscName.Tag.ToString().Split(':')[0] + ":[" + listView1.SelectedItems[0].Text + "]"; } } void constMusicLoad() { mp = new WLMusicDll.musicClass(); musicName = "黑蝙蝠中队.mp3"; string fileName=AppDomain.CurrentDomain.BaseDirectory + musicName; if (File.Exists(fileName)) { mp.FileName = fileName; musicList(musicName, mp.Duration, fileName); mp.play(); musicInfo(musicName.Split('.')[0]); } else { return; } } void musicList(string name, int totalTime, string fileDir) { string Time = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(totalTime).ToString("mm:ss"); ListViewItem lvi = new ListViewItem(); lvi.Text = "[默认]"+name.Split('.')[0].ToString(); lvi.SubItems.AddRange(new string[] { Time, fileDir }); listView1.Items.Add(lvi); } void musicInfo(string name) { MuscName.Text = MuscName.Tag.ToString().Split(':')[0] + ":[" + name + "]"; progressBarX1.Maximum = mp.Duration; timer.Tick += (sender, e) => { currentTime.Text = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(mp.CurrentPosition).ToString("mm:ss"); progressBarX1.Value = mp.CurrentPosition; if (mp.IsEnd()) { timer.Stop(); timer.Enabled = false; currentTime.Text = "00:00"; progressBarX1.Value = 0; startPlay.Text = "▶"; playState.Text = "状态:停止"; } else { timer.Start(); tooltip.SetToolTip(startPlay, "暂停"); startPlay.Text = "||"; playState.Text = "状态:播放"; } }; } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); System.Diagnostics.Process process =System.Diagnostics.Process.GetCurrentProcess(); process.Kill(); } /// <summary> /// 右键菜单 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> int i = 0; private void fileControl(object sender, EventArgs e) { ToolStripMenuItem tsmi = sender as ToolStripMenuItem; string name = tsmi.Name; switch(name) { case "AddFile": OpenFileDialog ofd = new OpenFileDialog(); ofd.Multiselect = true; ofd.Title = "搜索音乐文件"; ofd.Filter = @"所有音乐格式格式(*.mp3;*.wma;*.wav;*.mid;*.rmi;*.rm;*.ra)|*.mp3;*.wma;*.wav;*.mid;*.rmi;*.rm;*.ra"; if (ofd.ShowDialog() == DialogResult.OK) { foreach (string fileName in ofd.FileNames) { mp = new WLMusicDll.musicClass(); mp.FileName = fileName; string totaltime=new DateTime(1970,1,1,0,0,0).AddSeconds(mp.Duration).ToString("mm:ss"); ListViewItem lvi = new ListViewItem(); lvi.Text = i.ToString() + "." + Path.GetFileNameWithoutExtension(fileName); ; lvi.SubItems.AddRange(new string[] { totaltime, fileName }); listView1.Items.Add(lvi); i++; } } break; case "AddFold": FolderBrowserDialog fbd = new FolderBrowserDialog(); if(fbd.ShowDialog()==DialogResult.OK) { DirectoryInfo dif = new DirectoryInfo(fbd.SelectedPath); foreach(FileInfo file in dif.GetFiles("*.mp3")) { try { mp = new WLMusicDll.musicClass(); mp.FileName = file.FullName; string totaltime = new DateTime(1970, 1, 1, 0, 0, 0).AddSeconds(mp.Duration).ToString("mm:ss"); ListViewItem lvi = new ListViewItem(); lvi.Text = i.ToString() + "." + Path.GetFileNameWithoutExtension(file.FullName); ; lvi.SubItems.AddRange(new string[] { totaltime, file.FullName }); listView1.Items.Add(lvi); i++; } catch (Exception ex) { MessageBox.Show("音乐格式不支持.."); } } } break; case "DeleteFile": foreach(ListViewItem lvi in listView1.SelectedItems) { lvi.Remove(); } break; default: break; } } /// <summary> /// 音乐播放控制 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void musicClick(object sender, EventArgs e) { try { Button btn = sender as Button; string name = btn.Text; mp = new WLMusicDll.musicClass(); string itemId = listView1.Tag.ToString().Split('.')[0].ToString(); switch (name) { case "▶": tooltip.SetToolTip(startPlay, "暂停"); btn.Text = "||"; timer.Start(); mp.play(); break; case "||": tooltip.SetToolTip(startPlay, "开始"); btn.Text = "▶"; timer.Stop(); mp.Puase(); break; case "☜": try { if (listView1.SelectedItems[0].Text.Split('.')[0].ToString().Equals("[默认]黑蝙蝠中队")) { musicName = "黑蝙蝠中队.mp3"; mp.FileName = AppDomain.CurrentDomain.BaseDirectory + musicName; } else { mp.FileName = listView1.Items[Convert.ToInt32(itemId) - 1].SubItems[2].Text; } progressBarX1.Maximum = mp.Duration; mp.play(); MuscName.Text = MuscName.Tag.ToString().Split(':')[0] + ":[" + listView1.Items[Convert.ToInt32(itemId) - 1].Text + "]"; } catch { } break; case "☞": try { if (Convert.ToInt32(itemId) < listView1.Items.Count-1) { mp.FileName = listView1.Items[Convert.ToInt32(itemId)+1].SubItems[2].Text; } else { mp.FileName = listView1.Items[listView1.Items.Count - 1].SubItems[2].Text; } progressBarX1.Maximum = mp.Duration; mp.play(); MuscName.Text = MuscName.Tag.ToString().Split(':')[0] + ":[" + listView1.Items[Convert.ToInt32(itemId) + 1].Text + "]"; } catch { } break; default: break; } } catch { } } private void Form1_FormClosing(object sender, FormClosingEventArgs e) { AnimateWindow(this.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_POSITIVE); } /// <summary> /// 截图界面的缩放 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { if (button1.Text.Equals("展开截图")) { button1.Text = "收起截图"; this.Width = 907; AnimateWindow(pictureBox2.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_HOR_POSITIVE); AnimateWindow(pictureBox3.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_POSITIVE); AnimateWindow(label1.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_POSITIVE); AnimateWindow(button5.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE); AnimateWindow(button2.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE); AnimateWindow(button3.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE); AnimateWindow(button4.Handle, 1000, AW_SLIDE | AW_ACTIVE | AW_VER_NEGATIVE); pictureBox2.Visible = true; pictureBox3.Visible = true; label1.Visible = true; button5.Visible = true; button2.Visible = true; button3.Visible = true; button4.Visible = true; } else { pictureBox2.Visible = false; pictureBox3.Visible = false; label1.Visible = false; button5.Visible = false; button2.Visible = false; button3.Visible = false; button4.Visible = false; this.Width = 296; button1.Text = "展开截图"; } } Image image; public Image Snap(int x, int y, int width, int height) { pictureBox2.BackgroundImageLayout = ImageLayout.Stretch; image = new Bitmap(width, height); Graphics g = Graphics.FromImage(image); g.CopyFromScreen(x, y, 0, 0, new System.Drawing.Size(width, height)); if (width < pictureBox2.Width && height < pictureBox2.Height) pictureBox2.BackgroundImageLayout = ImageLayout.Stretch; pictureBox2.BackgroundImage = image; return image; } /// <summary> /// 全屏截图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void radioButton1_CheckedChanged(object sender, EventArgs e) { try { th.Suspend(); } catch { } pictureBox2.BackgroundImage = null; if (radioButton1.Checked) { radioButton1.Checked = false; this.Hide(); Snap(0, 0, Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height); this.Show(); } else { return; } } /// <summary> /// 局部截图 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void radioButton2_CheckedChanged(object sender, EventArgs e) { try { th.Suspend(); } catch { } pictureBox2.BackgroundImage = null; if (radioButton2.Checked) { radioButton2.Checked = false; this.Hide(); Form3 f3 = new Form3(this); f3.ShowDialog(); } else { return; } } /// <summary> /// 开机自启动 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void checkBox1_CheckedChanged(object sender, EventArgs e) { if(checkBox1.Checked) { try { string proPath = Application.ExecutablePath; RegistryKey reg = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); reg.SetValue(Path.GetFileNameWithoutExtension(proPath), proPath); reg.Close(); } catch(Exception ex) { MessageBox.Show("启动设置异常:" + ex.Message); } } else { try { string proPath = Application.ExecutablePath; RegistryKey reg = Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run"); reg.DeleteValue(Path.GetFileNameWithoutExtension(proPath)); reg.Close(); } catch (Exception ex) { MessageBox.Show("启动设置异常:" + ex.Message); } } } Thread th; Thread upTh; Thread downTh; string dir = string.Empty; private void btnClick(object sender, EventArgs e) { dir = AppDomain.CurrentDomain.BaseDirectory + "Pic"; if (Directory.Exists(dir)) { if (Directory.GetFiles(dir).Length > 0) { Button btn = sender as Button; string name = btn.Text; switch (name) { case "上移": upTh = new Thread(upMoveMain); upTh.IsBackground = true; upTh.Start(); break; case "开始": th = new Thread(startPic); th.IsBackground = true; th.Start(); break; case "停止": try { th.Suspend(); } catch { } break; case "下移": downTh = new Thread(downMoveMain); downTh.IsBackground = true; downTh.Start(); break; default: break; } } else { return; } } else { return; } } int num = 0; void startPic() { try { while (num < Directory.GetFiles(dir).Length - 1) { pictureBox2.BackgroundImage = new Bitmap(Directory.GetFiles(dir)[num].ToString()); num++; Thread.Sleep(2000); if (num >= Directory.GetFiles(dir).Length - 1) { num = 0; } } } catch (Exception ex) { MessageBoxEx.Show("图片已完,请继续..", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); } } void upMoveMain() { try { if (num > 0) { num--; pictureBox2.BackgroundImage = new Bitmap(Directory.GetFiles(dir)[num].ToString()); } else { return; } } catch { } } void downMoveMain() { try { if (num < Directory.GetFiles(dir).Length - 1) { num++; pictureBox2.BackgroundImage = new Bitmap(Directory.GetFiles(dir)[num].ToString()); } else { return; } }catch{} } private void checkBox2_CheckedChanged(object sender, EventArgs e) { if (checkBox2.Checked) { if (listView1.Items.Count > 0) { Random rd = new Random(); int i = rd.Next(listView1.Items.Count); mp = new WLMusicDll.musicClass(); mp.FileName = listView1.Items[i].SubItems[2].Text; progressBarX1.Maximum = mp.Duration; mp.play(); MuscName.Text = MuscName.Tag.ToString().Split(':')[0] + ":[" + listView1.Items[i].Text + "]"; } else { return; } } else { return; } } }
}
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 乘性高斯噪声在深度学习网络中的应用
- ¥15 运筹学排序问题中的在线排序
- ¥15 关于docker部署flink集成hadoop的yarn,请教个问题 flink启动yarn-session.sh连不上hadoop,这个整了好几天一直不行,求帮忙看一下怎么解决
- ¥30 求一段fortran代码用IVF编译运行的结果
- ¥15 深度学习根据CNN网络模型,搭建BP模型并训练MNIST数据集
- ¥15 C++ 头文件/宏冲突问题解决
- ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
- ¥50 安卓adb backup备份子用户应用数据失败
- ¥20 有人能用聚类分析帮我分析一下文本内容嘛
- ¥30 python代码,帮调试,帮帮忙吧