2019独角兽企业重金招聘Python工程师标准>>>

我们开发WinFrom程序,很多时候都希望程序只有一个实例在运行,避免运行多个同样的程序,一是没有意义,二是容易出错。为了更便于使用,笔者整理了一段自己用的代码,可以判断程序是否在运行,只运行一个实例,而且能实现当程序在运行时,再去双击程序图标,直接呼出已经运行的程序。下面看代码,只需在程序的入口文件中加如下代码即可:static class Program
{  /// <summary>  /// 应用程序的主入口点。  /// </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("/", "\\") == current.MainModule.FileName)        {          //返回已经存在的进程         return process;        }      }    }    return null;
}  //3.已经有了就把它激活,并将其窗口放置最前端 private static void HandleRunningInstance(Process instance) {    ShowWindowAsync(instance.MainWindowHandle, 1); //调用api函数,正常显示窗口    SetForegroundWindow(instance.MainWindowHandle); //将窗口放置最前端
}  [DllImport("User32.dll")]  private static extern bool ShowWindowAsync(System.IntPtr hWnd, int cmdShow);  [DllImport("User32.dll")]  private static extern bool SetForegroundWindow(System.IntPtr hWnd); #endregion} 

转载于:https://my.oschina.net/u/582827/blog/1544828

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

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

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

  2. 看到程序员坐在电脑前,如何判断程序员正在做什么?只需看这些

    1.打字快且停顿:正编码 2.键盘鼠标并用且不停点击,在debug 3.不停滚轮或pagedown:在查错 4.不停按刷新/f5:脚本卡住了 5. 一动不动紧盯屏幕:程序抛出异常 6.表情时而严肃时而 ...

  3. 如何定时启停Winform应用程序

    如何定时启停Winform应用程序 整体思路 关闭应用程序 启动应用程序 定时操作 这段时间,因为业务需要,要将一个由C#开发的winform应用程序做下定时关闭.开启操作.折腾了一番,碰到了一些小坑 ...

  4. 判断程序是否已经运行

    近段时间,需要写一个小功能,就是需要判断程序是否已经运行. 某个程序安装后,也许被多个用户运行.那怎样判断当前用户已经运行了此程序了呢? 下面是Insus.NET的做法,就是: <VB.NET ...

  5. C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)...

    #region//开机自动运行         private void CB_Auto_CheckedChanged(object sender, EventArgs e)         {//C ...

  6. iOS中判断程序是不是第一次运行(新手引导界面用)

    2019独角兽企业重金招聘Python工程师标准>>> 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序 ...

  7. 判断程序是否运行在虚拟机中的代码

    首先我们要了解一下什么是虚拟机, 对虚拟机的通用解释是通过软件模拟的具有完整硬件系统功能的, 运行在一个完全隔离环境中的完整计算机系统. 通过虚拟机软件, 你可以在一台物理计算机上模拟出一台或多台虚拟 ...

  8. Android之通过ActivityLifecycleCallbacks判断程序是否运行在后台

    1.问题 判断程序是否运行在后台运行 2.解决办法 我们可以使用ActivityLifecycleCallbacks,对于ActivityLifecycleCallbacks,看我的这篇博客介绍() ...

  9. 判断程序是否正在运行

    2016年05月07日 15:50:35 贝爷_野外求生 阅读数:3273 http://www.aspku.com/kaifa/cjc/131414.html 一.引言 最近发现很多人在论坛中问到如 ...

最新文章

  1. 任何网络都能山寨!新型黑盒对抗攻击可模拟未知网络进行攻击 | CVPR 2021
  2. 负载均衡服务器性能,服务器负载均衡:确保应用服务的高性能与高可用
  3. 教你使用TensorFlow2对阿拉伯语手写字符数据集进行识别
  4. 批量修改远程linux服务器密码
  5. Python-身份证核对
  6. mysql-5.6.31.tar.gz_MySQL5.6.31源码安装
  7. Hadoop Exception in createBlockOutputStream
  8. 什么是挂载?mount的用处在哪?
  9. 三次iframe框架切换
  10. Tcl Tutorial 笔记3 ·math
  11. python+pdf2docx+tkinter PDF转word小工具打包成exe
  12. 联想G450 Linux wifi,联想g450无线网卡驱动,详细教您无线网卡安装教程
  13. java计算机毕业设计计算机系教师教研科研管理系统源码+数据库+系统+lw文档+mybatis+运行部署
  14. 连接池实现mysql增删改查_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...
  15. 神经网络 知识图谱,神经网络基础知识
  16. word批量调整图片大小:
  17. CF - 158B - Taxi
  18. iOS 高德地图实现大头针展示,分级大头针,自定制大头针,在地图上画线,线和点共存,路线规划(驾车路线规划),路线导航,等一些常见的使用场景
  19. 红孩儿编辑器的详细设计
  20. Dockerfile配置APM监控实现Java容器的性能监控

热门文章

  1. jxl导入Excel
  2. arguments的理解
  3. 在线火星文转换器工具
  4. linux给进程加速,Linux 利用并行进程加速命令执行
  5. RecyclerView 下拉刷新上拉加载
  6. Android APK文件解析
  7. 9款极具创意的HTML5/CSS3进度条动画
  8. Windows 2003 Server R2 x64 IIS6.0 eWebEditor无法显示的问题
  9. Openbox-桌面图标设置
  10. 在ASP.NET页面中实现数据饼图(转载)