C#&&WPF只打开一个exe

这里写自定义目录标题


winform&&WPF只打开一个exe
winform:
在program.cs里面添加如下代码

   /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main()
    {
		Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        Process process = GetCurrentInstance();
        if (process != null)
        {
            if (IsIconic(process.MainWindowHandle))
            {
                ShowWindowAsync(process.MainWindowHandle, SW_RESTORE);
            }

            SetForegroundWindow(process.MainWindowHandle);
            Application.Exit();
            return;
        }
        SystemMgr.GetClass();
        Application.Run(ProcessForm.GetProcessForm());
    }


    public const int SW_RESTORE = 9;

	public static Process GetCurrentInstance(bool bIgnorePath = true)
	{
		Process currentProcess = Process.GetCurrentProcess();
		Process result;
		if (currentProcess.ProcessName.Contains("vshost"))
		{
			result = null;
		}
		else
		{
			Process[] Processes = Process.GetProcessesByName(currentProcess.ProcessName);
			foreach (Process process in Processes)
			{
				if (process.Id != currentProcess.Id)
				{
					if (bIgnorePath)
					{
						return process;
					}
					bool b = Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == currentProcess.MainModule.FileName;
					if (b)
					{
						return process;
					}
				}
			}
			result = null;
		}
		return result;
	}

	[DllImport("user32.dll")]
    private static extern bool SetProcessDPIAware();

	[DllImport("user32.dll")]
	public static extern bool IsIconic(IntPtr hWnd);

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

	[DllImport("user32.dll")]
	public static extern bool SetForegroundWindow(IntPtr hWnd);

wpf:
在app.xaml.cs 里面添加如下代码

  public App()
    {
        this.Startup += new StartupEventHandler(App_Startup);
    }

    void App_Startup(object sender, StartupEventArgs e)
    {
        Process process = GetCurrentInstance();
        if (process != null)
        {
            if (IsIconic(process.MainWindowHandle))
            {
                ShowWindowAsync(process.MainWindowHandle, SW_RESTORE);
            }
            SetForegroundWindow(process.MainWindowHandle);
            this.Shutdown();
            return;
        }
    }

    public const int SW_RESTORE = 9;

    public Process GetCurrentInstance(bool bIgnorePath = true)
    {
        Process currentProcess = Process.GetCurrentProcess();
        Process result;
        if (currentProcess.ProcessName.Contains("vshost"))
        {
            result = null;
        }
        else
        {
            Process[] Processes = Process.GetProcessesByName(currentProcess.ProcessName);
            foreach (Process process in Processes)
            {
                if (process.Id != currentProcess.Id)
                {
                    if (bIgnorePath)
                    {
                        return process;
                    }
                    bool b = Assembly.GetExecutingAssembly().Location.Replace("/", "\\") == currentProcess.MainModule.FileName;
                    if (b)
                    {
                        return process;
                    }
                }
            }
            result = null;
        }
        return result;
    }

    [DllImport("user32.dll")]
    private static extern bool SetProcessDPIAware();

    [DllImport("user32.dll")]
    public static extern bool IsIconic(IntPtr hWnd);

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

    [DllImport("user32.dll")]
    public static extern bool SetForegroundWindow(IntPtr hWnd);
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值