不重复启动程序

 1     static class Program
 2     {
 3         /// <summary>
 4         /// アプリケーションのメイン エントリ ポイントです。
 5         /// </summary>
 6         [STAThread]
 7         static void Main()
 8         {
 9             Process instance = RunningInstance();
10             if (instance == null)
11             {
12                 //启用可视样式
13                 Application.EnableVisualStyles();
14                 //在应用程序范围内设置控件显示文本的默认方式(可以设为使用新的GDI+ , 还是旧的GDI)
15                 //true使用GDI+方式显示文本,
16                 //false使用GDI方式显示文本.
17                 Application.SetCompatibleTextRenderingDefault(false);
18                 //在当前线程上开始运行标准应用程序消息循环,并使指定窗体可见
19                 Application.Run(new _1_02_Menu());
20             }
21             else
22             {
23                 // 二重起動はできません。
24                 string strMessage = Msg.GetMessageInfo("---", "");
25                 MessageBox.Show(strMessage, "---", MessageBoxButtons.OK, MessageBoxIcon.Error);
26 
27             }
28         }
29 
30         #region----Processで、同じメニューは2重起動はできません。---
31         /// <summary>
32         /// 同じメニューを検証する
33         /// </summary>
34         public static Process RunningInstance()
35         {
36             Process current = Process.GetCurrentProcess();
37             Process[] processes = Process.GetProcessesByName(current.ProcessName);
38             foreach (Process process in processes)
39             {
40                 if (process.Id != current.Id)
41                 {
42                     if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
43                     {
44                         return process;
45                     }
46                 }
47             }
48             return null;
49         }
50         #endregion
51     }

 

Form.ShowDialog()弹出模式化的窗体,只有当前窗体关闭,其他窗体才可使用
Form.Show()弹出非模式化的窗体,弹出后就关闭
Application.run() 在调用线程上开辟一个消息循环,并且保持窗体一直存在,直到退出程序
补充知识:Application.StarupPath获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。

转载于:https://www.cnblogs.com/-jwj/p/10716927.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值