Program.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using DaJiaoYan.Utils;
  2. using System;
  3. using System.Diagnostics;
  4. using System.Runtime.InteropServices;
  5. using System.Windows.Forms;
  6. namespace DaJiaoYan
  7. {
  8. internal static class Program
  9. {
  10. [STAThread]
  11. [DllImport("User32.dll")]
  12. private static extern bool ShowWindowAsync(System.IntPtr hWnd, int cmdShow);
  13. [DllImport("User32.dll")]
  14. private static extern bool SetForegroundWindow(System.IntPtr hWnd);
  15. /// <summary>
  16. /// 应用程序的主入口点。
  17. /// </summary>
  18. [STAThread]
  19. static void Main()
  20. {
  21. Process current = Process.GetCurrentProcess();
  22. Process instance = ProcessExts.RunningInstance(ref current);
  23. if (instance == null)
  24. {
  25. Application.EnableVisualStyles();
  26. Application.SetCompatibleTextRenderingDefault(false);
  27. Application.Run(new FormMain());
  28. }
  29. else
  30. {
  31. HandleRunningInstance(instance);
  32. }
  33. }
  34. #region 确保程序只运行一个实例
  35. private static void HandleRunningInstance(Process instance)
  36. {
  37. MessageBox.Show("程序已经在运行!", "提示信息", MessageBoxButtons.OK, MessageBoxIcon.Information);
  38. ShowWindowAsync(instance.MainWindowHandle, 1); //调用api函数,正常显示窗口
  39. SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端
  40. }
  41. #endregion
  42. }
  43. }