通过Process使应用程序在一台电脑上只能有一个在运行
废话少说直接上代码了:
#region 只允许一台主机上运行一个应用程序 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> /// 获取当前是否具有相同进程。 /// </summary> /// <returns></returns> public static Process GetRunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); //遍历正在有相同名字运行的例程 foreach (Process process in processes) { //忽略现有的例程 if (process.Id != current.Id) //确保例程从EXE文件运行 if (System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName) return process; } return null; } /// <summary> /// 激活原有的进程。 /// </summary> /// <param name="instance"></param> public static void HandleRunningInstance(Process instance) { ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL); SetForegroundWindow(instance.MainWindowHandle); } #endregion*/ 使用方法如下: /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] static void Main() { //Process instance = GetRunningInstance(); //if (instance == null) //{ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new MainForm()); }//else { // SMSMsgBox.ShowMessage(" 您的程序已经在运行了!!"); //}
本文来自博客园,作者:十四,转载请注明原文链接:https://www.cnblogs.com/yanghucheng/archive/2012/11/30/2796320.html