日期:2014-05-19  浏览次数:20954 次

如何实现象Windows Media Player那样,双击不同的MP3文件能播放相应的MP3文件,但是主窗口只有一个。
如何实现象Windows   Media   Player那样,双击不同的MP3文件能播放相应的MP3文件,但是主窗口只有一个。
我已经在Main(string[]   __args)中,获取点击的文件名,当第一次打开某文件后,程序可以运行,并打开该文件,但当我以后再双击别的文件时,只是显示主窗口,还是播放第一次双击的文件,该如何解决?谢谢

  static   class   Program
        {
                ///   <summary>
                ///   The   main   entry   point   for   the   application.
                ///   </summary>
                [MTAThread]
                static   void   Main(string[]   __arrArgs)
                {
                        if   (__arrArgs.Length   ==   0   ||   __arrArgs   ==   null)
                        {
                                Application.Run(new   MainForm());
                        }
                        else
                        {
                                Application.Run(new   MainForm(arrArgs[0]));
                        }
                }

        }

------解决方案--------------------
当再次点击的时候,关闭当前播放窗体,在NEW一个不行吗?瞎猜的!
------解决方案--------------------
启动时检测是否已有一个实例存在,如果有则激活前一个实例,关闭自己
------解决方案--------------------
手头没资料,不能详细说明,给你一个思路吧!

第一步,使用mutex可以判断,是否已经打开了一个实例,mutex的好处在于,可以跨进程,不只是线程。

第二步,如果已经存在了一个实例,那就需要先找到这个对应的窗口,利用Process,遍历所有进程,找到原来实例的窗口。

第三步,进程之间通讯,最好用wmi,自己写一段接收消息并处理的程序就好了,这样已经打开的实例就可以根据传入的消息,进行处理了。

第四步,把自己close掉,看起来就像没有打开过一样,所有的处理都是在原先的那个实例里做的。