本人用 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);
        }