C# WinForm 判断程序是否已经在运行,且只允许运行一个实例,附源码
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 判断程序是否已经在运行,且只允许运行一个实例,附源码相关推荐
- C# WinForm 判断程序是否已经在运行,且只允许运行一个实例
static class Program { /// <summary> /// 应用程序的主入口点. /// </summary> [STAThread] ...
- 看到程序员坐在电脑前,如何判断程序员正在做什么?只需看这些
1.打字快且停顿:正编码 2.键盘鼠标并用且不停点击,在debug 3.不停滚轮或pagedown:在查错 4.不停按刷新/f5:脚本卡住了 5. 一动不动紧盯屏幕:程序抛出异常 6.表情时而严肃时而 ...
- 如何定时启停Winform应用程序
如何定时启停Winform应用程序 整体思路 关闭应用程序 启动应用程序 定时操作 这段时间,因为业务需要,要将一个由C#开发的winform应用程序做下定时关闭.开启操作.折腾了一番,碰到了一些小坑 ...
- 判断程序是否已经运行
近段时间,需要写一个小功能,就是需要判断程序是否已经运行. 某个程序安装后,也许被多个用户运行.那怎样判断当前用户已经运行了此程序了呢? 下面是Insus.NET的做法,就是: <VB.NET ...
- C#.NET Form设置/取消开机自动运行,判断程序是否已经设置成开机自动启动(转载)...
#region//开机自动运行 private void CB_Auto_CheckedChanged(object sender, EventArgs e) {//C ...
- iOS中判断程序是不是第一次运行(新手引导界面用)
2019独角兽企业重金招聘Python工程师标准>>> 在软件下载安装完成后,第一次启动往往需要显示一个新手操作引导,来告诉用户怎么操作这个app,这就需要在程序一开始运行就判断程序 ...
- 判断程序是否运行在虚拟机中的代码
首先我们要了解一下什么是虚拟机, 对虚拟机的通用解释是通过软件模拟的具有完整硬件系统功能的, 运行在一个完全隔离环境中的完整计算机系统. 通过虚拟机软件, 你可以在一台物理计算机上模拟出一台或多台虚拟 ...
- Android之通过ActivityLifecycleCallbacks判断程序是否运行在后台
1.问题 判断程序是否运行在后台运行 2.解决办法 我们可以使用ActivityLifecycleCallbacks,对于ActivityLifecycleCallbacks,看我的这篇博客介绍() ...
- 判断程序是否正在运行
2016年05月07日 15:50:35 贝爷_野外求生 阅读数:3273 http://www.aspku.com/kaifa/cjc/131414.html 一.引言 最近发现很多人在论坛中问到如 ...
最新文章
- 任何网络都能山寨!新型黑盒对抗攻击可模拟未知网络进行攻击 | CVPR 2021
- 负载均衡服务器性能,服务器负载均衡:确保应用服务的高性能与高可用
- 教你使用TensorFlow2对阿拉伯语手写字符数据集进行识别
- 批量修改远程linux服务器密码
- Python-身份证核对
- mysql-5.6.31.tar.gz_MySQL5.6.31源码安装
- Hadoop Exception in createBlockOutputStream
- 什么是挂载?mount的用处在哪?
- 三次iframe框架切换
- Tcl Tutorial 笔记3 ·math
- python+pdf2docx+tkinter PDF转word小工具打包成exe
- 联想G450 Linux wifi,联想g450无线网卡驱动,详细教您无线网卡安装教程
- java计算机毕业设计计算机系教师教研科研管理系统源码+数据库+系统+lw文档+mybatis+运行部署
- 连接池实现mysql增删改查_java使用原生MySQL实现数据的增删改查以及数据库连接池技术...
- 神经网络 知识图谱,神经网络基础知识
- word批量调整图片大小:
- CF - 158B - Taxi
- iOS 高德地图实现大头针展示,分级大头针,自定制大头针,在地图上画线,线和点共存,路线规划(驾车路线规划),路线导航,等一些常见的使用场景
- 红孩儿编辑器的详细设计
- Dockerfile配置APM监控实现Java容器的性能监控