不重复启动程序

不羁岁月 提交于 2020-04-01 04:27:59
 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获取启动了应用程序的可执行文件的路径,不包括可执行文件的名称。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!