C#程序启动项的设置方法
本文为大家分享了C#程序启动项的设置方法,供大家参考,具体内容如下
托盘图标设置
新建一个NotifyIcon,会在托盘处显示一个图标。
NotifyIcon.Icon可以直接设置一个ico图片,也可以延用原有程序的图标。
notifyIcon.Icon=System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath);
publicpartialclassMainWindow:Window { privateNotifyIconnotifyIcon; publicMainWindow() { InitializeComponent(); SetNotifyIcon(); this.Hide(); } #regionNotifyIcon privatevoidSetNotifyIcon() { this.notifyIcon=newNotifyIcon(); this.notifyIcon.BalloonTipText="磁盘清理工具"; this.notifyIcon.ShowBalloonTip(2000); this.notifyIcon.Text="磁盘清理工具:每20天清理一次"; this.notifyIcon.Icon=System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath); this.notifyIcon.Visible=true; //打开菜单项 MenuItemopen=newMenuItem("打开"); open.Click+=newEventHandler(Show); //退出菜单项 MenuItemexit=newMenuItem("退出"); exit.Click+=newEventHandler(Close); //关联托盘控件 MenuItem[]childen=newMenuItem[]{open,exit}; notifyIcon.ContextMenu=newContextMenu(childen); this.notifyIcon.MouseDoubleClick+=newMouseEventHandler((o,e)=> { if(e.Button==MouseButtons.Left)this.Show(o,e); }); } privatevoidShow(objectsender,EventArgse) { this.Visibility=Visibility.Visible; this.ShowInTaskbar=true; this.Activate(); } privatevoidHide(objectsender,EventArgse) { this.ShowInTaskbar=false; this.Visibility=Visibility.Hidden; } privatevoidClose(objectsender,EventArgse) { System.Windows.Application.Current.Shutdown(); } #endregion #region窗口 privatevoidMinimizeButton_OnClick(objectsender,RoutedEventArgse) { WindowState=WindowState.Minimized; } privatevoidCloseButton_OnClick(objectsender,RoutedEventArgse) { this.Hide(); } privatevoidHeaderGrid_OnMouseLeftButtonDown(objectsender,MouseButtonEventArgse) { if(e.ButtonState==MouseButtonState.Pressed) { this.DragMove(); } } #endregion }
禁用多进程启动
//禁止双进程 boolcanCreateNew; using(System.Threading.Mutexm=newSystem.Threading.Mutex(true,System.Windows.Forms.Application.ProductName,outcanCreateNew)) { if(!canCreateNew) { this.Shutdown(); } }
删除原有进程
//////删除原有进程 /// ///privatevoidKillProcess(stringprocessName) { //得到所有打开的进程 try { ProcesscurrentProcess=Process.GetCurrentProcess(); varprocesses=Process.GetProcessesByName(processName).Where(process=>process.Id!=currentProcess.Id); foreach(Processthisprocinprocesses) { //找到程序进程,kill之。 if(!thisproc.CloseMainWindow()) { thisproc.Kill(); } } } catch(Exceptionex) { } }
设置开机自启动
privatevoidSetAppAutoRun(boolautoRun) { if(autoRun)//设置开机自启动 { stringpath=System.Windows.Forms.Application.ExecutablePath; RegistryKeyrk=Registry.LocalMachine; RegistryKeyrk2=rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.SetValue("JcShutdown",path); rk2.Close(); rk.Close(); } else//取消开机自启动 { RegistryKeyrk=Registry.LocalMachine; RegistryKeyrk2=rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.DeleteValue("JcShutdown",false); rk2.Close(); rk.Close(); } }
App.cs中完整代码:
publicpartialclassApp:Application { publicApp() { //禁止双进程 boolcanCreateNew; using(System.Threading.Mutexm=newSystem.Threading.Mutex(true,System.Windows.Forms.Application.ProductName,outcanCreateNew)) { if(!canCreateNew) { this.Shutdown(); } } SetAppAutoRun(true); Startup+=App_Startup; } privatevoidSetAppAutoRun(boolautoRun) { if(autoRun)//设置开机自启动 { MessageBox.Show("设置开机自启动,需要修改注册表","提示");//hovertree.com stringpath=System.Windows.Forms.Application.ExecutablePath; RegistryKeyrk=Registry.LocalMachine; RegistryKeyrk2=rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.SetValue("JcShutdown",path); rk2.Close(); rk.Close(); } else//取消开机自启动 { MessageBox.Show("取消开机自启动,需要修改注册表","提示"); RegistryKeyrk=Registry.LocalMachine; RegistryKeyrk2=rk.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Run"); rk2.DeleteValue("JcShutdown",false); rk2.Close(); rk.Close(); } } privatevoidApp_Startup(objectsender,StartupEventArgse) { newAutoCleanCacheHelper(CleanCacheVeiwModel.ViewModel).Start(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。