本文主要是介绍C# 唯一性进程的方法封装(Winform/WPF通用),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
C#唯一进程封装
C# 唯一性进程的方法封装
public class UniqueProcess{/// <summary>/// 焦点切换指定的窗口,并将其带到前台/// </summary>/// <param name="hWnd"></param>/// <param name="fAltTab"></param>[DllImport("user32.dll")]public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab);//提示消息public static string Message = "该应用系统已经在运行!";/// <summary>/// 获取当前程序名已运行的进程,如果没有则返回null/// </summary>/// <returns></returns>public static Process RunningInstance(){Process current = Process.GetCurrentProcess();Process[] processes = Process.GetProcessesByName(current.ProcessName);//遍历与当前进程名称相同的进程列表foreach (Process process in processes){if (process.Id != current.Id){return process;}}return null;}/// <summary>/// 将进程主窗体显示到最前/// </summary>/// <param name="instance"></param>public static void HandleRunningInstance(Process instance){MessageBox.Show(Message, "提示信息");IntPtr handle = instance.MainWindowHandle;//将进程显示在最前SwitchToThisWindow(handle, true);}}
在WPF中使用
public partial class App : Application{protected override void OnStartup(StartupEventArgs e){var instance = UniqueProcess.RunningInstance();if (instance != null){UniqueProcess.HandleRunningInstance(instance);//关闭Application.Current.Shutdown();return;}//正常启动base.OnStartup(e);}}
在Winform中使用
internal static class Program
{/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main(){var instance = UniqueProcess.RunningInstance();if (instance != null){UniqueProcess.HandleRunningInstance(instance);//未创建窗体,直接返回就退出程序了,无需另外关闭return;}//正常启动Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new Form1());}
}
实现效果
这篇关于C# 唯一性进程的方法封装(Winform/WPF通用)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!