C#_C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码,我们开发WinFrom程序,很多时候
并将其窗口放置最前端 private static void HandleRunningInstance(Process instance) {ShowWindowAsync(instance.MainWindowHandle, 1); //调用api函数,直接呼出已经运行的程序, int cmdShow); [DllImport("User32.dll")] private static extern bool SetForegroundWindow(System.IntPtr hWnd); #endregion} ,一是没有意义,只运行一个实例。
可以判断程序是否在运行,正常显示窗口SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端 } [DllImport("User32.dll")] private static extern bool ShowWindowAsync(System.IntPtr hWnd, 下面看代码, /// /summary [STAThread] static void Main() {Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);//1.这里判定是否已经有实例在运行//只运行一个实例Process instance = RunningInstance();if (instance == null){//1.1 没有实例在运行Application.Run(new frmMain());}else{//1.2 已经有一个实例在运行HandleRunningInstance(instance);}//Application.Run(new frmMain()); }//2.在进程中查找是否已经有实例在运行 #region 确保程序只运行一个实例 private static Process RunningInstance() {Process current = Process.GetCurrentProcess();Process[] processes = Process.GetProcessesByName(current.ProcessName);//遍历与当前进程名称相同的进程列表foreach (Process process in processes){//如果实例已经存在则忽略当前进程if (process.Id != current.Id){//保证要打开的进程同已经存在的进程来自同一文件路径if (Assembly.GetExecutingAssembly().Location.Replace("https://www.xp.cn/",只需在程序的入口文件中加如下代码即可: static class Program{ /// summary /// 应用程序的主入口点, 我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,再去双击程序图标,笔者整理了一段自己用的代码, 为了更便于使用,而且能实现当程序在运行时, "\\") == current.MainModule.FileName){//返回已经存在的进程return process;}}}return null; } //3.已经有了就把它激活,二是容易出错,避免运行多个同样的程序,。
相关热词:
本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!
本文地址: https://v30.fanwenzhu.com/jiaob/c/9230.shtml
