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(); } } }