首页 新闻 会员 周边 捐助

Winform 如何向其他进程发送消息

0
悬赏园豆:10 [已解决问题] 解决于 2013-09-28 11:42

我现在有一个Winform程序,这个程序只能启动一个实例,但是每次启动的时候都会有启动参数。

/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args) // 第二次启动时,args 的参数需要传递给已经启动的实例,并退出当前实例

限制启动单个实例我知道怎么实现,但是当我第二次启动时,我如何把Main函数的参数 args 数组传递给已经启动的第一个实例?

求各位大侠指点。。。

俗人...的主页 俗人... | 初学一级 | 园豆:83
提问于:2013-09-27 18:35
< >
分享
最佳答案
0

自己找到解决方案了,使用 Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase (引用:Microsoft.VisualBasic.dll), 参考文章:

http://www.hanselman.com/blog/TheWeeklySourceCode31SingleInstanceWinFormsAndMicrosoftVisualBasicdll.aspx

俗人... | 初学一级 |园豆:83 | 2013-09-28 11:41
其他回答(2)
0

通过文件传递,两个进程读写同一个文件,仅供参考。或读写同一个数据库表,同一个注册表项等

收获园豆:5
会长 | 园豆:12463 (专家六级) | 2013-09-28 10:08

这个太方法太。。。。那个什么了。我已经找到比较好的解决方案了。

支持(0) 反对(0) 俗人... | 园豆:83 (初学一级) | 2013-09-28 11:36
0
static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);


            Mutex mutex = new Mutex(false,"SINGLE_INSTANCE_MUTEX");
            if (!mutex.WaitOne(0,false))
            {
                mutex.Close();
                mutex.Dispose();
                mutex = null;                
            }

            if (mutex != null)
            {
                if (new frmLogin().ShowDialog() == DialogResult.OK)
                {                   
                    Application.Run(new MainForm());                    
                }
            }
            else
            {
                MessageBox.Show("程序已经启动!!");

            }
        }
    }
收获园豆:5
誉尚学教育 | 园豆:226 (菜鸟二级) | 2013-09-28 10:28

哥们,限制启动单个实例我知道怎么实现。。

支持(0) 反对(0) 俗人... | 园豆:83 (初学一级) | 2013-09-28 11:35
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册