C# 只允许运行一个程序实例
生活随笔
收集整理的這篇文章主要介紹了
C# 只允许运行一个程序实例
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
using System;
using System.Windows.Forms;
using System.Runtime.InteropServices;//使用DllImport的必須。
using System.Diagnostics;//引入Process 類namespace 命名空間
{static class Program{private const int WS_SHOWNORMAL = 1;[DllImport("User32.dll")]private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);[DllImport("User32.dll")]private static extern bool SetForegroundWindow(IntPtr hWnd);/// <summary>/// 應(yīng)用程序的主入口點。/// </summary>
[STAThread]static void Main(){Process instance = GetRunningInstance();if (instance == null){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new frm_Main());//在這啟動主窗體。
}else{HandleRunningInstance(instance);}}/// <summary>/// 獲取當(dāng)前是否具有相同進(jìn)程。/// </summary>/// <returns></returns>public static Process GetRunningInstance(){Process current = Process.GetCurrentProcess();Process[] processes = Process.GetProcessesByName(current.ProcessName);//遍歷正在有相同名字運(yùn)行的例程 foreach (Process process in processes){//忽略現(xiàn)有的例程 if (process.Id != current.Id)//確保例程從EXE文件運(yùn)行 if ( System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/" , "\\") == current.MainModule.FileName )return process;}return null;}/// <summary>/// 激活原有的進(jìn)程。/// </summary>/// <param name="instance"></param>public static void HandleRunningInstance(Process instance){ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);SetForegroundWindow(instance.MainWindowHandle);}}
}
?
轉(zhuǎn)載于:https://www.cnblogs.com/lsgsanxiao/p/11171358.html
總結(jié)
以上是生活随笔為你收集整理的C# 只允许运行一个程序实例的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU 5025Saving Tang
- 下一篇: 透明的iframe