1091860959 2015-11-30 14:02 采纳率: 50%
浏览 2136
已采纳

用WinForm 窗体 做一个音乐播放器程序。

能进行各种音频格式转换,快进,后退等操作。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;  
            }  
        }  
    
    
    
    }  
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥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代码,帮调试,帮帮忙吧