87 lines
2.5 KiB
C#
87 lines
2.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Diagnostics;
|
|
using System.Linq;
|
|
using System.Runtime.InteropServices;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
|
|
namespace 软件系统客户端Wpf
|
|
{
|
|
/// <summary>
|
|
/// App.xaml 的交互逻辑
|
|
/// </summary>
|
|
public partial class App : Application
|
|
{
|
|
/// <summary>
|
|
/// 指示了应用程序退出时的代码
|
|
/// </summary>
|
|
public static int QuitCode { get; set; } = 0;
|
|
|
|
|
|
protected override void OnStartup(StartupEventArgs e)
|
|
{
|
|
base.OnStartup(e);
|
|
//捕获未处理的异常
|
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
|
|
|
Process process = Process.GetCurrentProcess();
|
|
//遍历应用程序的同名进程组
|
|
foreach (Process p in Process.GetProcessesByName(process.ProcessName))
|
|
{
|
|
//不是同一进程则关闭刚刚创建的进程
|
|
if (p.Id != process.Id)
|
|
{
|
|
//此处显示原先的窗口需要一定的时间,不然无法显示
|
|
ShowWindowAsync(p.MainWindowHandle, 9);
|
|
SetForegroundWindow(p.MainWindowHandle);
|
|
Thread.Sleep(10);
|
|
Current.Shutdown();//关闭当前的应用程序
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
P1:
|
|
LoginWindow lw = new LoginWindow();
|
|
bool? result = lw.ShowDialog();
|
|
if (result.Value == true)
|
|
{
|
|
MainWindow mw = new MainWindow();
|
|
MainWindow = mw;
|
|
|
|
mw.ShowDialog();
|
|
if (QuitCode == 1)
|
|
{
|
|
//继续显示登录窗口
|
|
QuitCode = 0;
|
|
goto P1;
|
|
}
|
|
else
|
|
{
|
|
Current.Shutdown();//关闭当前的应用程序
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Environment.Exit(0);
|
|
}
|
|
|
|
}
|
|
|
|
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
[DllImport("User32.dll")]
|
|
private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow);
|
|
|
|
[DllImport("User32.dll")]
|
|
private static extern bool SetForegroundWindow(IntPtr hWnd);
|
|
}
|
|
}
|