C# 让应用程序只运行一个实例
用如下方法可以保证应用程序只运行一个实例。
添加引用
using System.Runtime.InteropServices;
using System.Diagnostics;
调用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;
添加如下两个函数
{
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中添加如下代码
{
Process instance = RunningInstance();
if (instance == null)
{
Application.Run(new Form1());
}
else
{
HandleRunningInstance(instance);
}
}
C# 让应用程序只运行一个实例相关推荐
- 转:让程序只运行一个实例的四种方法
先留着以后有用. 让程序只运行一个实例的四种方法 综述:让一个程序只运行一个实例的方法有多种,但是原理都类似,也就是在程序创建前,有窗口的程序在窗口创建前,检查系统中是否已经设置了某些特定标志了,如果 ...
- 让Java程序只运行一个实例
一个程序可以在内存里面存在多个运行实例,比如,你可以打开多个微软的Word程序.但是,有些时候我们需要控制程序运行的实例只有一个,也就是说,该程序同一时刻在内存里面运行的只有一个实例.这样当这个程序在 ...
- Qt应用程序只运行一个实例
在实际应用中,我们经常需要让应用程序只有一个实例,再打开新的文档或者页面时,只是替换现在的窗口或者新打开一个标签,而不是重新启动一次应用程序.Qt中是否可以做到这样呢,答案是肯定的,因为Qt本身可以直 ...
- 只运行一个实例的方法
在VC++ 中编程中,只运行一个实例的方法主要有两类: 1 遍历当前的所有窗口,查找相同的实例.为了便于查找,一般要事先设一个查找标志. 2 利用系统提供的互斥对象或信标,直接让系统抑制重复的实例. ...
- 限制程序只打开一个实例(转载)
当我们在做一些管理平台类的程序(比如Windows的任务管理器)时,往往需要限制程序只能打开一个实例.解决这个问题的大致思路很简单,无非是在程序打开的时候判断一下是否有与自己相同的进程开着,如果有,则 ...
- 只运行一个实例的写法
有时我们需要只允许运行应用程序的一个实例,当进程启动时,如果发现应用程序的一个实例在运行,就自动停止运行.我们通常通过Mutex互斥体在Main函数中实现,通常的写法是: [STAThread] st ...
- 让你的程序只能运行一个实例
先说一个循环系统进程的方法吧, //首先取得你的程序当前进程 Process current = Process.GetCurrentProce ...
- 使用互斥体使程序只运行一个
何为互斥体 引用了百科的话 互斥体实现了"互相排斥"(mutual exclusion)同步的简单形式(所以名为互斥体(mutex)).互斥体禁止多个线程同时进入受保护的代码&qu ...
- c#,Winform同一系统中只运行一个实例。
代码 using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; na ...
- linux 只运行一个实例 互斥锁,Linux多线程4-1_互斥量
//包含头文件 int pthread_mutex_destroy(pthread_mutex_t *mutex); int pthread_mutex_init(pthread_mutex_t *r ...
最新文章
- sql中的begin....end
- python 编程笔记
- UIScrollViewDelegate-代理API详解
- ImagesSprite V1.1.1 Beta发布
- c语言 连接两个字符串不使用库函数
- Python——迭代器的几个高级用法
- HTML鼠标悬停显示隐藏div,javascript – 在鼠标悬停时显示/隐藏DIV
- 【论文写作】在线考试系统的设计原理如何写
- Windows核心编程_Visual Studio2019找不到MFC项目
- 104. 字符串函数
- Altium designer-PCB设计基础笔记
- 常用术语中英简繁对照- -
- 期末作业代码网页设计代码——花店购物网站源码(27页) 学生动花店购物页设计模板下载 植物大学生HTML网页制作作品 简单网页设计成品 dreamweaver学生网站模板
- python爬虫爬取中国天气网_初识python 之 爬虫:爬取中国天气网数据
- Elasticsearch灾备同步方案功能验证(三)
- 关于mysql百万100W数据查询优化
- 2015-2016-1 《信息安全系统设计基础》学生博客列表
- 3D Packing for Self-Supervised Monocular Depth Estimation
- 软件缺陷度量中用EXCEL制作柏拉图的方法
- 如何快速的将EXCEL表格数据拆分成多个文件?
热门文章
- day22 属性 类方法 静态方法 反射 https://www.cnblogs.com/jin-xin/articles/9214247.html
- 不知不觉,写了一个编译器(一)
- Function.prototype.bind、call与apply方法简介
- T-SQL语句实现数据库备份与还原功能
- robotframework 接口测试 +RSA 加密
- 升级Xcode8后需要添加的一些权限
- jQuery动态星级评分效果实现方法
- EasyRTMP实现对接海康、大华等IPCamera SDK进行RTMP推送直播功能
- 绝好的一套针对初学者的JavaScript教程
- 新托福考位助手 1.0 Beta2 发布