用如下方法可以保证应用程序只运行一个实例。

添加引用

using System.Reflection;
using System.Runtime.InteropServices;
using System.Diagnostics;

调用DLL文件

[DllImport("User32.dll")]
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
[DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hWnd);
private const int WS_SHOWNORMAL = 1;

添加如下两个函数

public static Process RunningInstance()
{
    Process current = Process.GetCurrentProcess();
    Process[] processes = Process.GetProcessesByName(current.ProcessName);

//Loop   through   the   running   processes   in   with   the   same   name
    foreach (Process process in processes)
    {
        //Ignore   the   current   process
        if (process.Id != current.Id)
        {
            //Make   sure   that   the   process   is   running   from   the   exe   file.
            if (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") ==
                current.MainModule.FileName)
            {
                //Return   the   other   process   instance.
                return process;
            }
        }
    }

//No   other   instance   was   found,   return   null.
    return null;
}
public static void HandleRunningInstance(Process instance)
{
    //Make   sure   the   window   is   not   minimized   or   maximized
    ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);

//Set   the   real   intance   to   foreground   window
    SetForegroundWindow(instance.MainWindowHandle);
}

在MAIN中添加如下代码

public static void Main()
{
    Process instance = RunningInstance();
    if (instance == null)
    {
        Application.Run(new Form1());
    }
    else
    {
        HandleRunningInstance(instance);
    }
}

C# 让应用程序只运行一个实例相关推荐

  1. 转:让程序只运行一个实例的四种方法

    先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...

  2. 让Java程序只运行一个实例

    一个程序可以在内存里面存在多个运行实例,比如,你可以打开多个微软的Word程序.但是,有些时候我们需要控制程序运行的实例只有一个,也就是说,该程序同一时刻在内存里面运行的只有一个实例.这样当这个程序在 ...

  3. Qt应用程序只运行一个实例

    在实际应用中,我们经常需要让应用程序只有一个实例,再打开新的文档或者页面时,只是替换现在的窗口或者新打开一个标签,而不是重新启动一次应用程序.Qt中是否可以做到这样呢,答案是肯定的,因为Qt本身可以直 ...

  4. 只运行一个实例的方法

    在VC++ 中编程中,只运行一个实例的方法主要有两类: 1 遍历当前的所有窗口,查找相同的实例.为了便于查找,一般要事先设一个查找标志. 2 利用系统提供的互斥对象或信标,直接让系统抑制重复的实例. ...

  5. 限制程序只打开一个实例(转载)

    当我们在做一些管理平台类的程序(比如Windows的任务管理器)时,往往需要限制程序只能打开一个实例.解决这个问题的大致思路很简单,无非是在程序打开的时候判断一下是否有与自己相同的进程开着,如果有,则 ...

  6. 只运行一个实例的写法

    有时我们需要只允许运行应用程序的一个实例,当进程启动时,如果发现应用程序的一个实例在运行,就自动停止运行.我们通常通过Mutex互斥体在Main函数中实现,通常的写法是: [STAThread] st ...

  7. 让你的程序只能运行一个实例

        先说一个循环系统进程的方法吧,             //首先取得你的程序当前进程             Process current = Process.GetCurrentProce ...

  8. 使用互斥体使程序只运行一个

    何为互斥体 引用了百科的话 互斥体实现了"互相排斥"(mutual exclusion)同步的简单形式(所以名为互斥体(mutex)).互斥体禁止多个线程同时进入受保护的代码&qu ...

  9. c#,Winform同一系统中只运行一个实例。

    代码 using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; na ...

  10. linux 只运行一个实例 互斥锁,Linux多线程4-1_互斥量

    //包含头文件 int pthread_mutex_destroy(pthread_mutex_t *mutex); int pthread_mutex_init(pthread_mutex_t *r ...

最新文章

  1. sql中的begin....end
  2. python 编程笔记
  3. UIScrollViewDelegate-代理API详解
  4. ImagesSprite V1.1.1 Beta发布
  5. c语言 连接两个字符串不使用库函数
  6. Python——迭代器的几个高级用法
  7. HTML鼠标悬停显示隐藏div,javascript – 在鼠标悬停时显示/隐藏DIV
  8. 【论文写作】在线考试系统的设计原理如何写
  9. Windows核心编程_Visual Studio2019找不到MFC项目
  10. 104. 字符串函数
  11. Altium designer-PCB设计基础笔记
  12. 常用术语中英简繁对照- -
  13. 期末作业代码网页设计代码——花店购物网站源码(27页) 学生动花店购物页设计模板下载 植物大学生HTML网页制作作品 简单网页设计成品 dreamweaver学生网站模板
  14. python爬虫爬取中国天气网_初识python 之 爬虫:爬取中国天气网数据
  15. Elasticsearch灾备同步方案功能验证(三)
  16. 关于mysql百万100W数据查询优化
  17. 2015-2016-1 《信息安全系统设计基础》学生博客列表
  18. 3D Packing for Self-Supervised Monocular Depth Estimation
  19. 软件缺陷度量中用EXCEL制作柏拉图的方法
  20. 如何快速的将EXCEL表格数据拆分成多个文件?

热门文章

  1. day22 属性 类方法 静态方法 反射 https://www.cnblogs.com/jin-xin/articles/9214247.html
  2. 不知不觉,写了一个编译器(一)
  3. Function.prototype.bind、call与apply方法简介
  4. T-SQL语句实现数据库备份与还原功能
  5. robotframework 接口测试 +RSA 加密
  6. 升级Xcode8后需要添加的一些权限
  7. jQuery动态星级评分效果实现方法
  8. EasyRTMP实现对接海康、大华等IPCamera SDK进行RTMP推送直播功能
  9. 绝好的一套针对初学者的JavaScript教程
  10. 新托福考位助手 1.0 Beta2 发布