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();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。