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>/// 应用程序的主入口点。/// </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>/// 获取当前是否具有相同进程。/// </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);}}
}

转载于:https://www.cnblogs.com/lsgsanxiao/p/11171358.html

C# 只允许运行一个程序实例相关推荐

  1. C# WinForm只允许运行一个窗体实例

    大概看了看别人的方法,都是从语法的角度巧妙实现的. 我要实现的目的是dialogForm.Show(); 点击按钮显示对话框窗体,如果窗体没有关闭,再次点击,不重复显示. 我用了个笨方法,就是用一个静 ...

  2. 解决C#程序只允许运行一个实例的几种方法详解

    解决C#程序只允许运行一个实例的几种方法详解 参考文章: (1)解决C#程序只允许运行一个实例的几种方法详解 (2)https://www.cnblogs.com/randyzhuwei/p/5403 ...

  3. 同一个PC只能运行一个应用实例(考虑多个用户会话情况)

    原文:同一个PC只能运行一个应用实例(考虑多个用户会话情况) 1 class Program 2 { 3 private static Mutex m; 4 5 [STAThread] 6 stati ...

  4. 在OpenEIM中每运行一个程序

    在OpenEIM中每运行一个程序,系统资源就会减少.有的程序会消耗大量的系统资源,即使把资源关闭,在内存中还是有一些没有的DLL文件在运行,这样就便得系统的运行速度下降,甚至出现上述问题. 我们可以通 ...

  5. C#程序只允许运行一个实例的解决方案

    最近在做winform的程序中,需要只能打开一个程序,如果已经存在,则激活该程序的窗口,并显示在最前端.在网上google了一哈,找到了很多的解决方案.这里我整理了3种方案,并经过了测试,现和朋友们分 ...

  6. C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码

    2019独角兽企业重金招聘Python工程师标准>>> 我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错.为了更便 ...

  7. C# WinForm 判断程序是否已经在运行,且只允许运行一个实例

    static class Program {   /// <summary>   /// 应用程序的主入口点.   /// </summary>   [STAThread]   ...

  8. delphi 只允许运行一个实例的三种方法《转》

    一.创建互斥对象 在工程project1.dpr中创建互斥对象 Program project1UsesWindows,Form,FrmMain in 'FrmMain.pas' {MainForm} ...

  9. IDEA如何执行一个包内的程序时不报另一个包内程序的错误 IDEA如何只编译运行一个包内的程序

    有时候想编译运行一个包内的程序时会报错同一个项目下的另一个包内程序的错误,如何跳过有错误不想执行的包内的程序,只执行想执行包内的程序呢 首先右键想跳过执行的包 选择 Mark Directory as ...

最新文章

  1. servletConfig对象
  2. ASP.NET没有魔法——ASP.NET MVC 与数据库之MySQLEF
  3. [C++]constexpr函数
  4. 多么痛的领悟--写在领英股票被腰斩之后
  5. c语言 手机图形库,c语言的图形库 - osc_opiar5rp的个人空间 - OSCHINA - 中文开源技术交流社区...
  6. DefaultIfEmpty
  7. 前端程序员有前途吗?
  8. 【动态规划】数位DP入门题:不要62
  9. 编程基本功:变量局部化的教训
  10. 易语言制作计算机按键指令,易语言键代码一览表
  11. HFSS阵列天线设计与仿真1
  12. 基于Montgomery算法的高速、可配置 RSA密码IP核硬件设计系列(三)——抵抗侧信道攻击设计方案
  13. Sketch 54 中文版发布 新增深色模式
  14. 差分相干解调 matlab,差分码PSK信号的相干解调系统仿真
  15. 大数据管理平台-数据处理与数据集市
  16. android 清理后自动重启,解决Android后台清理APP后,程序自动重启的问题
  17. 前端面试问题答案汇总--基础版
  18. 不越狱iPhone安装破解插件的应用商店
  19. 程序员如何通过造轮子走向人生巅峰?
  20. 移动端界面设计之尺寸篇

热门文章

  1. url override and HttpSession implements session
  2. Oracle SQL中实现indexOf和lastIndexOf功能
  3. Apache Bench安装与使用
  4. AtomicReference 原子引用
  5. bootstrap在ie8下,兼容媒体查询
  6. 自定义实现moveable button
  7. .Net4.0 Parallel编程(三)Data Parallelism下
  8. 详解虚拟机中为Linux添加硬盘
  9. win7(windows 7)系统下安装SQL2005(SQL Server 2005)图文教程
  10. 史迪仔的原型_星际宝贝三个版本对比,莉罗抛弃史迪仔,童年真的回不去了