只允许运行一个客户端实例
来源:互联网 发布:json api接口规范 编辑:程序博客网 时间:2024/06/01 10:03
internal static class Program { /// <summary> /// 应用程序的主入口点。 /// </summary> [STAThread] private static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); SysHelper.RunFrmOnly<FrmMain>(); } } public static class SysHelper { /// <summary> /// 唯一运行一个实例,第二次打开时会把首次运行的置顶 /// 缺陷:(1)应用程序改名后无效 (2)如果首次运行的界面最大化,置顶时,界面会缩小,需要手动调整 /// </summary> /// <typeparam name="T">运行的窗体</typeparam> public static void RunFrmOnly<T>() where T : new() { Process instance = RunningInstance(); if (instance == null) { Form frm = new T() as Form; Application.Run(frm); } else { HandleRunningInstance(instance); } } [DllImport("User32.dll")] private static extern bool SetForegroundWindow(IntPtr hWnd); [DllImport("User32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); private static void HandleRunningInstance(Process instance) { // 确保窗口没有被最小化或最大化 ShowWindowAsync(instance.MainWindowHandle, 4); // 设置真实例程为foreground window SetForegroundWindow(instance.MainWindowHandle); // 放到最前端 } private static Process RunningInstance() { Process current = Process.GetCurrentProcess(); Process[] processes = Process.GetProcessesByName(current.ProcessName); return processes.Where(process => process.Id != current.Id).FirstOrDefault( process => Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName); } }
阅读全文
0 0
- 只允许运行一个客户端实例
- Windows客户端开发--只允许有一个实例运行
- 只允许运行一个实例
- 只允许运行一个实例
- 只允许程序运行一个实例
- 只允许运行一个实例(C#)
- C# 只允许运行一个实例
- vc只允许运行一个实例
- 如何做到只允许一个实例运行?
- C# 只允许运行一个实例
- C# 只允许运行一个实例
- .net 只允许运行一个实例
- c# winform 只允许运行一个实例
- C# 只允许运行一个实例
- C# 只允许运行一个实例
- c# winform 只允许运行一个实例
- C# 只允许运行一个实例
- 只允许一个实例运行的方法
- qt学习笔记之QLineEdit
- SVN修改已经提交的LOG日志 (Windows)
- 接口获取数据库连接阻塞问题
- phpstorm 运行 php 出现 502 Bad Gateway
- SQL技巧
- 只允许运行一个客户端实例
- vector的内存释放
- tower1
- ActiveMQ教程
- JAVA中的final关键字
- nginx下获取客户端真实IP地址
- CSS的设计模式
- Maven的Pom.xml详解(2)
- dubbo用户指南