首页 > 其他分享 >Winform只运行一个实例

Winform只运行一个实例

时间:2023-02-21 14:15:20浏览次数:35  
标签:Process const int SW private instance 实例 运行 Winform

创建帮助类

单例帮助类
 public class MainHelper
    {
        public static Process RunningInstance(string location)
        {
            var current = Process.GetCurrentProcess();
            var processes = Process.GetProcessesByName(current.ProcessName);
            foreach (Process process in processes)
            {
                if (process.Id != current.Id)
                {
                    if (location.Replace("/", @"\") == current.MainModule.FileName)
                    {
                        return process;
                    }
                }
            }
            return null;
        }

        public static void Active(Process instance)
        {
            ShowWindowAsync(instance.MainWindowHandle, 1);
            SetForegroundWindow(instance.MainWindowHandle);
        }

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

        [DllImport("User32.dll")]
        private static extern bool SetForegroundWindow(IntPtr hWnd);
    }

 

// ShowWindowAsync      说明
private const int SW_HIDE = 0;

private const int SW_NORMAL = 1;

private const int SW_MAXIMIZE = 3;

private const int SW_SHOWNOACTIVATE = 4;

private const int SW_SHOW = 5;

private const int SW_MINIMIZE = 6;

private const int SW_RESTORE = 9;

private const int SW_SHOWDEFAULT = 10;

调用

 var location = Assembly.GetExecutingAssembly().Location;
 var instance = MainHelper.RunningInstance(location);
 if (instance != null)
 {
     MainHelper.Active(instance);
 }
 else
 {
     Application.Run(new PhysicalUploadForm());
 }

 

标签:Process,const,int,SW,private,instance,实例,运行,Winform
From: https://www.cnblogs.com/spy0505/p/17140732.html

相关文章

  • 保持Android Service在手机休眠后继续运行的方法
    保持AndroidService在手机休眠后继续运行的方法 下面小编就为大家分享一篇保持AndroidService在手机休眠后继续运行的方法,具有很好的参考价值,希望对大家有所帮助。一......
  • 转字符驱动实例gpio
    概述:字符设备驱动程序:是按照字符设备要求完成的由操作系统调用的代码。重点理解以下内容: 1.驱动是写给操作系统的代码,它不是直接给用户层程序调用的,而是给系统调用的......
  • 破解遗留系统快速重构的5步心法(附实例)
    前两天和一个架构师朋友闲聊,说到了「重构」这个话题,他们公司早年间上线的项目系统,因一直没专人在演进过程中为代码质量负责,导致现在代码越来越混乱,逐渐堆积成“屎山”,目......
  • division by zero引发的存储过程假运行
    在存储过程中有用到除法去得到数据的,并且除数字段一定有0值的存在才导致的错误。导致的现象就是存储过程运行看似没有问题,成功执行,但是实际看表数据量却是没有数据的,(还有......
  • NPOI空单元格策略处理策略MissingCellPolicy.RETURN_NULL_AND_BLANK可能会导致你的方
    最近遇到一个读取Excel数据的业务,当代码执行到NPOI加载流数据的方法时,直接抛出异常:“Fieldnotfound:'NPOI.SS.UserModel.MissingCellPolicy.RETURN_NULL_AND_BLANK'.”,......
  • WindowS 平台下单实例Oracle 11.2.0.1 升级Oracle 11.2.0.4
     由于业务环境需要,只有11.2.0.4可以直接升级19C,所以现需先升级到11.2.0.4主要步骤如下:备份数据,RMAN全备,必要的话建议拷贝一份HOME目录;下载升级包11.2.0.4关闭数据库,包括监......
  • 自动故障感知以及服务实例自动摘除源码剖析
    1每隔1min调度一次EvictionTask这个任务,感知是否有实例故障,并摘除eureka-server初始化完成,进入下面这个方法registry.openForTraffic(applicationInfoManager,regist......
  • Centos运行.net core程序的多种方式以及相互之间的区别。
     nohupdotnet/www/wwwroot/xxx.dll--urls"http://*:6001;http://*:6002"&此时候的6001和6002端口对应的程序的内存和static变量都是存在同一个堆栈里面,可以做缓存。......
  • 公交车载智能视频监控:公交运行的网络安全墙​
    ​随着我国城市化的发展,城市公交作为城市交通运输的重要组成部分,成为大家低碳环保、绿色出行的首选交通工具。由于城市公交属于公共交通,与出行乘客、司机的公共财产、人身安......
  • find命令查询实例
    Linux系统下查找文件命令总结,这个很哇塞!入门小站 入门小站 2023-02-1221:42 发表于湖北收录于合集#Linux704个入门小站分享运维技巧及10k+Stars的......