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

C# 编辑器
本人用   C#   做个文本编辑器,想只允许启动一个实例,已经编辑器启动后,不在启动第二个实例,二是直接调用第一个实例,然后自己打开。
我调用   SendMessage   WndProc   两个系统函数,我发现第二次启动,接受不到消息。
下面是部分代码,请大侠们指正。
                        Process   instance   =   RunningInstance();
                        if   (instance   ==   null)
                        {
                                //如果没有其它例程,就新建一个窗体
                                Application.EnableVisualStyles();
                                Application.SetCompatibleTextRenderingDefault(false);
                                edit   =   new   EditTest(startCmd);
                                Application.Run(edit   );
                        }
                        else
                        {
                                MessageBox.Show( "程序正在运行,您无需在启动! ",   "提示 ",   MessageBoxButtons.OK,   MessageBoxIcon.Information);
                                HandleRunningInstance(instance);  
                        }

                protected   override   void   WndProc(ref       Message   m)
                {
                        if   (m.Msg   ==   Const.WM_SHOW_TEXT)
                        {
                                MessageBox.Show( "Show   Text ");
                        }
                        else
                                base.WndProc(ref       m);
                }

                public   static   void   HandleRunningInstance(Process   instance)
                {
                        SendMessage(instance.MainWindowHandle,   Const.WM_SHOW_TEXT,   0,   0);
                }<