public static void Start() { ChoApplicationHost host = ChoApplication.Host; if (host != null) { host.OnStartService(null); } }
/// <summary> /// This class should be created and passed into Application.Run( ... ) /// </summary> public ChoApplicationContext(ChoApplicationHost appHost) { ChoGuard.ArgumentNotNull(appHost, "ApplicationHost"); _appHost = appHost; _mainForm = appHost.GetMainWindowObject(); _hasWindow = appHost.IsWindowApp; BuildDefaultContextMenu(); this._components = new System.ComponentModel.Container(); this.NotifyIcon = new ChoNotifyIcon(this._components); PreInitializeContext(appHost); ChoApplication.RaiseAfterNotifyIconConstructed(NotifyIcon); InitializeContext(appHost); _defaultTrayTipMsg = "{0} is running...".FormatString(ChoGlobalApplicationSettings.Me.ApplicationName); }
public static void Run <T>(string[] args) where T : ChoApplicationHost { if (_applicationHost != null) { return; } lock (_hostLock) { if (_applicationHost == null) { _applicationHost = Activator.CreateInstance <T>(); _applicationHost.Args = args; ChoApplicationHost.IsApplicationHostUsed = true; ChoFramework.Initialize(); ChoService.Initialize(); } } }
public static void Run(ChoApplicationHost host, string[] args) { ChoGuard.ArgumentNotNull(host, "Host"); if (_applicationHost != null) { return; } lock (_hostLock) { if (_applicationHost == null) { _applicationHost = host; _applicationHost.Args = args; ChoApplicationHost.IsApplicationHostUsed = true; ChoFramework.Initialize(); ChoService.Initialize(); } } }
private void PreInitializeContext(ChoApplicationHost appHost) { if (appHost != null) { //if (ChoFrameworkCmdLineArgs.GetApplicationMode() != null // && ChoFrameworkCmdLineArgs.GetApplicationMode().Value == ChoApplicationMode.Console if (ChoApplication.ApplicationMode == ChoApplicationMode.Console && !ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn /*&& _mainForm != null */) { _mainForm = null; //ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn = false; return; } if (!ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.DisableDefaultDoubleClickEvent) { this.NotifyIcon.DoubleClick += new System.EventHandler(this.notifyIcon_DoubleClick); } if (!ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.DisableDefaultClickEvent) { this.NotifyIcon.Click += new System.EventHandler(this.notifyIcon_Click); } //System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); System.Windows.Forms.Application.ThreadException += new ThreadExceptionEventHandler(ChoApplication.Application_ThreadException); if (_mainForm is Form) { ChoApplication.WindowsAppType = ChoWindowsAppType.WinForms; this._mainFormWindow = (Form)_mainForm; } else if (_mainForm is Window) { ChoApplication.WindowsAppType = ChoWindowsAppType.WPF; this._mainWPFWindow = (Window)_mainForm; //System.Windows.Application app = appHost.ApplicationObject as System.Windows.Application; //if (app == null) // app = new ChoWPFDefaultApplication(); //app.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(ChoApplication.Current_DispatcherUnhandledException); //app.Run(_mainWPFWindow); } //else // throw new ApplicationException("MainWindow object is not a valid object. Must be either Form or Window type."); } //this.NotifyIcon.DoubleClick += new System.EventHandler(this.notifyIcon_DoubleClick); //this.NotifyIcon.Icon = windowApp != null ? windowApp.TrayIcon : null; if (this.NotifyIcon.Icon == null) { Assembly entryAssembly = ChoAssembly.GetEntryAssembly(); if (entryAssembly != null) { this.NotifyIcon.Icon = Icon.ExtractAssociatedIcon(entryAssembly.Location); } } //this.NotifyIcon.Text = windowApp != null ? (windowApp.TooltipText.IsNullOrWhiteSpace() ? ChoGlobalApplicationSettings.Me.ApplicationName : windowApp.TooltipText) : ChoGlobalApplicationSettings.Me.ApplicationName; if (this.NotifyIcon.Text.IsNullOrWhiteSpace()) { this.NotifyIcon.Text = ChoGlobalApplicationSettings.Me.ApplicationName; } if (this.NotifyIcon.BalloonTipText.IsNullOrWhiteSpace()) { this.NotifyIcon.BalloonTipText = _defaultTrayTipMsg; } if (this.NotifyIcon.ContextMenu == null) { this.NotifyIcon.ContextMenuStrip = _defaultContextMenu; } }
/// <summary> /// Create the NotifyIcon UI, the ContextMenu for the NotifyIcon and an Exit menu item. /// </summary> private void InitializeContext(ChoApplicationHost appHost) { //if (!_hasWindow) // ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn = true; //if (appHost != null) //{ // //if (ChoFrameworkCmdLineArgs.GetApplicationMode() != null // // && ChoFrameworkCmdLineArgs.GetApplicationMode().Value == ChoApplicationMode.Console // if (ChoApplication.ApplicationMode == ChoApplicationMode.Console // && !ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn // /*&& _mainForm != null */) // { // _mainForm = null; // //ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn = false; // return; // } // this.NotifyIcon.DoubleClick += new System.EventHandler(this.notifyIcon_DoubleClick); // //System.Windows.Forms.Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException); // System.Windows.Forms.Application.ThreadException += new ThreadExceptionEventHandler(ChoApplication.Application_ThreadException); // if (_mainForm is Form) // { // ChoApplication.WindowsAppType = ChoWindowsAppType.WinForms; // this._mainFormWindow = (Form)_mainForm; // } // else if (_mainForm is Window) // { // ChoApplication.WindowsAppType = ChoWindowsAppType.WPF; // this._mainWPFWindow = (Window)_mainForm; // //System.Windows.Application app = appHost.ApplicationObject as System.Windows.Application; // //if (app == null) // // app = new ChoWPFDefaultApplication(); // //app.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(ChoApplication.Current_DispatcherUnhandledException); // //app.Run(_mainWPFWindow); // } // //else // // throw new ApplicationException("MainWindow object is not a valid object. Must be either Form or Window type."); //} ////this.NotifyIcon.DoubleClick += new System.EventHandler(this.notifyIcon_DoubleClick); ////this.NotifyIcon.Icon = windowApp != null ? windowApp.TrayIcon : null; //if (this.NotifyIcon.Icon == null) //{ // Assembly entryAssembly = ChoAssembly.GetEntryAssembly(); // if (entryAssembly != null) // this.NotifyIcon.Icon = Icon.ExtractAssociatedIcon(entryAssembly.Location); //} ////this.NotifyIcon.Text = windowApp != null ? (windowApp.TooltipText.IsNullOrWhiteSpace() ? ChoGlobalApplicationSettings.Me.ApplicationName : windowApp.TooltipText) : ChoGlobalApplicationSettings.Me.ApplicationName; //if (this.NotifyIcon.Text.IsNullOrWhiteSpace()) // this.NotifyIcon.Text = ChoGlobalApplicationSettings.Me.ApplicationName; //if (this.NotifyIcon.BalloonTipText.IsNullOrWhiteSpace()) // this.NotifyIcon.BalloonTipText = _defaultTrayTipMsg; //if (this.NotifyIcon.ContextMenu == null) //{ // this.NotifyIcon.ContextMenuStrip = _defaultContextMenu; //} //this.NotifyIcon.Visible = ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn; if (this._mainFormWindow != null) { _mainFormWindow.Show(); ChoWindowsManager.HideConsoleWindow(); ChoWindowsManager.MainWindowHandle = this._mainFormWindow.Handle; _mainFormWindow.Closed += new EventHandler(mainForm_Closed); _mainFormWindow.Closing += new System.ComponentModel.CancelEventHandler(mainForm_Closing); _mainFormWindow.Resize += new EventHandler(mainForm_Resize); } else if (this._mainWPFWindow != null) { System.Windows.Forms.Integration.ElementHost.EnableModelessKeyboardInterop(_mainWPFWindow); if (_appHost.WinApp == null) { //_appHost.WinApp = ChoWPFDefaultApplication.Default; //_appHost.WinApp.DispatcherUnhandledException += new System.Windows.Threading.DispatcherUnhandledExceptionEventHandler(ChoApplication.Current_DispatcherUnhandledException); _mainWPFWindow.Show(); } ChoWindowsManager.HideConsoleWindow(); WindowInteropHelper windowInteropHelper = new WindowInteropHelper(_mainWPFWindow); ChoWindowsManager.MainWindowHandle = windowInteropHelper.Handle; _mainWPFWindow.SourceInitialized += mainWPFWindow_SourceInitialized; _mainWPFWindow.StateChanged += new EventHandler(mainWPFWindow_StateChanged); _mainWPFWindow.Closed += new EventHandler(mainWPFWindow_Closed); _mainWPFWindow.Closing += new System.ComponentModel.CancelEventHandler(mainWPFWindow_Closing); } else { ChoWindowsManager.HideConsoleWindow(); } if (ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn) { if (_appHost != null) { if (ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.HideMainWindowAtStartup) { //this._showMainWndMenuItem.Checked = false; _isMainWindowOpen = false; ToggleShowContextMenuItem(); } } } else { if (_appHost != null) { ShowMainWindow(); } } ChoGlobalApplicationSettings.Me.ObjectChanged += new EventHandler(Me_ConfigChanged); Me_ConfigChanged(null, null); if (ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.TurnOn) { if (ChoGlobalApplicationSettings.Me.TrayApplicationBehaviourSettings.HideMainWindowAtStartup) { HideMainWindow(); } else { //HideMainWindow(); //ShowMainWindow(); } } }
public ChoApplicationHost() { Instance = this; //if (ChoApplication.ApplicationMode == ChoApplicationMode.NA) //if (!ChoApplication.IsInitialized) //{ if (!ChoApplication.InternalEventsSubscriped) { ChoApplication.InternalEventsSubscriped = true; ChoApplication.ApplyGlobalApplicationSettingsOverridesInternal += ((sender, e) => { ChoServiceCommandLineArgs.OverrideFrxParams(e.Value); ApplyGlobalApplicationSettingsOverrides(e.Value); } ); ChoApplication.AfterAppFrxSettingsLoadedInternal += ((sender, e) => { if (e.Value is ChoServiceInstallerSettings) { ChoServiceInstallerSettings o = (ChoServiceInstallerSettings)e.Value; o.BeforeInstall(() => BeforeInstall()); o.AfterInstall(() => AfterInstall()); o.BeforeUninstall(() => BeforeUninstall()); o.AfterUninstall(() => AfterUninstall()); } AfterAppFrxSettingsLoaded(e.Value); } ); ChoApplication.ApplyMetaDataFilePathSettingsOverridesInternal += ((sender, e) => { ApplyMetaDataFilePathSettingsOverrides(e.Value); } ); ChoApplication.AfterNotifyIconConstructedInternal += ((sender, e) => { AfterNotifyIconConstructed(e.Value); } ); } //ChoApplication.ApplyFrxParamsOverridesInternal += ((sender, e) => //{ // ApplyFrxParamsOverrides(e.GlobalApplicationSettings, e.MetaDataFilePathSettings); // if (_initialized) return; // _initialized = true; // ChoServiceCommandLineArgs.OverrideFrxParams(e); //}); if (Environment.UserInteractive) { if (this.GetMainWindowObject() != null) { if (ChoApplication.ApplicationMode == ChoApplicationMode.NA) { if (GetMainWindowObject() is Window || GetMainWindowObject() is Form) { ChoApplication.ApplicationMode = ChoApplicationMode.Windows; if (GetMainWindowObject() is Window) { ChoApplication.WindowsAppType = ChoWindowsAppType.WPF; } else { ChoApplication.WindowsAppType = ChoWindowsAppType.WinForms; } } else { ChoApplication.ApplicationMode = ChoApplicationMode.Console; } } //if (!(this is IChoWindowApp)) // throw new ChoApplicationException("ApplicationHost must derive from IChoWindowApp for Windows application."); } //ChoApplicationMode? applicationMode = ChoFrameworkCmdLineArgs.GetApplicationMode(); //if (applicationMode != null) // ChoApplication.ApplicationMode = applicationMode.Value; if (ChoApplication.ApplicationMode == ChoApplicationMode.Windows) { //if (ChoApplication.WindowsAppType == ChoWindowsAppType.NA) // ChoApplication.ApplicationMode = ChoApplicationMode.Console; } } ChoApplication.FatalApplicationException += FatalApplicationException; //if (Environment.UserInteractive) //{ // if (!ChoServiceCommandLineArgs.HasServiceParams()) // { // if (ChoApplication.ApplicationMode == ChoApplicationMode.Windows) // { // if (!ChoAppFrxSettings.Me.DoNotShowEnvSelectionWnd) // { // ChoChooseEnvironmentFrm.Show(); // //frm1 = new ChoChooseEnvironmentFrm(); // //if (frm1.ShowDialog() == System.Windows.Forms.DialogResult.Cancel) // // Environment.Exit(-101); // } // } // } //} //} //else // ApplyFrxParamsOverrides(ChoGlobalApplicationSettings.Me, ChoMetaDataFilePathSettings.Me); //ChoApplication.Initialize(); ChoGlobalApplicationSettings x = ChoGlobalApplicationSettings.Me; ChoApplication.WriteToEventLog(ChoServiceInstallerSettings.Me.ToString()); }