WinForm程序只运行一个实例
来源:互联网 发布:java分布式系统 编辑:程序博客网 时间:2024/06/14 11:14
只启动一个窗体,如果再次启动则激活该窗体
using System;
using System.Collections.Generic;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace TEST
{
static class Program
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[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;
[STAThread]
static void Main()
{
//得到正在运行的例程
Process instance = RunningInstance();
if (instance == null)
{
//如果没有其它例程,就新建一个窗体
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
}
else
{
//处理发现的例程
HandleRunningInstance(instance);
}
}
/// <summary>
/// 得到正在运行的进程
/// </summary>
/// <returns></returns>
public static Process RunningInstance()
{
Process current = Process.GetCurrentProcess();
Process[] processes = Process.GetProcessesByName(current.ProcessName);
//遍历正在有相同名字运行的进程
foreach (Process process in processes)
{
//忽略现有的进程
if (process.Id != current.Id)
{
//确保进程从EXE文件运行
if (process.MainModule.FileName == current.MainModule.FileName)
{
// 返回另一个进程实例
return process;
}
}
}
//没有其它的进程,返回Null
return null;
}
/// <summary>
/// 处理正在运行的进程,也就是将其激活
/// </summary>
/// <param name="instance">要处理的进程</param>
public static void HandleRunningInstance(Process instance)
{
//确保窗口没有被最小化或最大化
ShowWindowAsync(instance.MainWindowHandle, WS_SHOWNORMAL);
//设置真实进程为foreground window
SetForegroundWindow(instance.MainWindowHandle);
}
}
}
- WinForm程序只运行一个实例
- C# WinForm 只运行一个程序实例
- WinForm程序只运行一个实例
- winform只运行一个程序
- C#winform中只允许程序运行一个实例
- C# Winform程序只允许运行一个实例
- winform运行一个程序实例
- c# winform 只允许运行一个实例
- c# winform 只允许运行一个实例
- C# winform 只运行一个实例窗口
- C# Winform只运行一个实例
- 只运行一个程序实例
- 只运行一个实例程序
- 程序只运行一个实例
- 只运行一个程序实例
- 程序只运行一个实例
- 程序只运行一个实例
- 程序只运行一个实例
- [SoapUI]The maximum heap size (-Xmx) might be too large
- Eclipse User Library
- myeclipse 自动完成(补全)
- 程序员成熟的标志
- Jboss调优
- WinForm程序只运行一个实例
- ip地址解析
- python Property属性用法
- java学习笔记——Object的equals方法
- sscanf函数用法详解
- 多线程尝试
- sql联合查询的程序
- weblogic:java.lang.reflect.InvocationTargetException
- 用sql检查数据是否连续