using IOTContainer.Common;
using Microsoft.VisualBasic.ApplicationServices;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Security.Principal;
using System.Threading.Tasks;
using System.Windows;
namespace IOTContainer
{
public class EntryPoint
{
[STAThread]
public static void Main(string[] args)
{
try
{
SingleInstanceManager manager = new SingleInstanceManager();
var identity = WindowsIdentity.GetCurrent();
var principal = new WindowsPrincipal(identity);
if (principal.IsInRole(WindowsBuiltInRole.Administrator))
{
// 当前正在以管理员权限运行。
}
manager.Run(args);
}
catch (Exception ex)
{
Log.MyLog.WriteLogFile("出错:" + ex);
}
}
}
///
/// App.xaml 的交互逻辑
///
public partial class App : Application
{
public App()
{
InitializeComponent();
}
public void Activate()
{
this.MainWindow.Show();
this.MainWindow.Activate();
}
}
public class SingleInstanceManager :
Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase
{
private App wpfapp; // 这才是真正的WPF Application
///
/// 单例程序
///
public SingleInstanceManager()
{
this.IsSingleInstance = true;
}
// 第一次打开调这个方法
protected override bool OnStartup(
Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e)
{
wpfapp = new App();
wpfapp.Run();
return false;
}
///
/// 当有其他应用程序实例化时,则触发此事件,弹出已存在的实例窗口
///
///
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
{
// Subsequent launches
base.OnStartupNextInstance(eventArgs);
//wpfapp.Activate();
}
}
}