zoukankan      html  css  js  c++  java
  • 创建WPF单实例应用程序

    1.自定义SingletonWindow类(此方法也适合于传统winform程序)

    using System;
    using System.Linq;

    namespace NetWorld
    {
    public class SingletonWindow
    {
    public static System.Diagnostics.Process Process() //如果不适用附加属性也可以直接使用此函数
    {
    //判断单实例的方式有很多,如mutex,process,文件锁等,这里用的是process方式
    var process = GetRunningInstance();
    if (process != null)
    {
    HandleRunningInstance(process);
    Environment.Exit(0);
    }
    return process;
    }

    [System.Runtime.InteropServices.DllImport("User32.dll")]
    static extern bool SetForegroundWindow(IntPtr hWnd);

    static System.Diagnostics.Process GetRunningInstance()
    {
    var current = System.Diagnostics.Process.GetCurrentProcess();
    var processes = System.Diagnostics.Process.GetProcessesByName(current.ProcessName);
    foreach (var process in processes)
    {
    if (process.Id != current.Id)
    if (System.Reflection.Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == current.MainModule.FileName)
    return process;
    }
    return null;
    }

    static void HandleRunningInstance(System.Diagnostics.Process instance)
    {
    if (instance.MainWindowHandle != IntPtr.Zero)
    {
    SetForegroundWindow(instance.MainWindowHandle);
    }
    }
    }
    }

    2.

  • 相关阅读:
    dfs 与 剪枝
    杭电OJ1789、南阳OJ236(贪心法)解题报告
    多边形面积问题(hdoj2036)
    retain copy(浅复制) mutablecopy (深复制)
    IOS开发的目录结构
    UITableView 委托方法总结
    ios block
    UITableView 学习笔记
    iso socket基础2
    ios socket(基础demo)
  • 原文地址:https://www.cnblogs.com/wxjing67/p/2614656.html
Copyright © 2011-2022 走看看