zoukankan      html  css  js  c++  java
  • C#如何让应用程序只有一个实例在运行

    using System;
    using System.Runtime.InteropServices;
    using System.Windows.Forms;
    using System.Diagnostics;
    using System.Reflection;

    public class OneInstnace
    {
    [STAThread]
    public static void Main()
    {
    //得到正在运行的例程
    Process instance = RunningInstance();
    if (instance == null)
    {
    //如果没有其它例程,就新建一个窗体
    Application.Run (new Form());
    }
    else
    {
    //处理发现的例程
    HandleRunningInstance(instance);
    }
    }
    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 (Assembly.GetExecutingAssembly().Location.Replace("/", "\\") ==current.MainModule.FileName)
    {
    //返回另一个例程实例
    return process;
    }
    }
    }

    //没有其它的例程,返回Null
    return null;
    }

    public static void HandleRunningInstance(Process instance)
    {
    //确保窗口没有被最小化或最大化
    ShowWindowAsync (instance.MainWindowHandle , WS_SHOWNORMAL);

    //设置真实例程为foreground window
    SetForegroundWindow (instance.MainWindowHandle);
    }

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

    [DllImport("User32.dll")]
    private static extern bool SetForegroundWindow(IntPtr hWnd);
    private const int WS_SHOWNORMAL = 1;
    }
  • 相关阅读:
    css定位
    css盒子
    css元素分类
    Css属性
    Css基础2
    啊啊啊啊
    函数指针
    重载函数
    成员函数
    资源网站
  • 原文地址:https://www.cnblogs.com/memaxiaofeng/p/3275481.html
Copyright © 2011-2022 走看看