public Host(IServiceProvider services, IServiceCollection pool, IAppBuilder appBuilder, ITerminationNotifier terminationNotifier, ITray tray, IHotKey hotkey, IQuickWindow window) { this.services = services; this.pool = pool; this.appBuilder = appBuilder; this.terminationNotifier = terminationNotifier; this.tray = tray; this.hotkey = hotkey; this.window = window; actions = new ObservableCollection <ActionBase>(); }
private void ConfigureInternalServices() { ITerminationNotifier terminationNotifier = services.CreateInstance <TerminationNotifier>(); pool.Add(ServiceDescriptor.Singleton <ITerminationNotifier>(terminationNotifier)); ITray tray = services.CreateInstance <Tray>(); pool.Add(ServiceDescriptor.Singleton <ITray>(tray)); IProgramContextFactory programContextFactory = services.CreateInstance <ProgramContextFactory>(); pool.Add(ServiceDescriptor.Singleton <IProgramContextFactory>(programContextFactory)); pool.Add(ServiceDescriptor.Scoped <IProgramContext>(services => { IProgramContextFactory factory = services.GetService <IProgramContextFactory>(); return(factory.RebuildContext()); })); }
public Tray(ITerminationNotifier terminationNotifier) { this.terminationNotifier = terminationNotifier; tray = new NotifyIcon(); Assembly assembly = Assembly.GetEntryAssembly(); Stream iconStream = assembly.LoadStream("HakeQuick.tray.ico"); tray.Icon = new Icon(iconStream); iconStream.Close(); iconStream.Dispose(); tray.Visible = true; MenuItem closeMenu = new MenuItem("关闭", (sender, e) => { this.terminationNotifier.NotifyTerminate(); }); MenuItem[] menuitems = new MenuItem[] { closeMenu }; tray.ContextMenu = new ContextMenu(menuitems); }