首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C# 编辑器,该怎么解决

2011-12-28 
C# 编辑器本人用C#做个文本编辑器,想只允许启动一个实例,已经编辑器启动后,不在启动第二个实例,二是直接调

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);
                }

[解决办法]


SendMessage(instance.MainWindowHandle, Const.WM_SHOW_TEXT, 0, 0);
--> > > >
SendMessage(instance.Handle, Const.WM_SHOW_TEXT, 0, 0);

MainWindowHandle指主窗体,即:楼主的edit窗体
Handle才是进程的句柄
WndProc()方法是在进程中相应的,所以消息发送给进程才合理

测试通过

热点排行