首页 > 编程 > C# > 正文

C#程序启动项的设置方法

2019-10-29 19:41:23
字体:
来源:转载
供稿:网友

本文为大家分享了C#程序启动项的设置方法,供大家参考,具体内容如下

托盘图标设置

新建一个NotifyIcon,会在托盘处显示一个图标。

NotifyIcon.Icon可以直接设置一个ico图片,也可以延用原有程序的图标。

notifyIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath);

public partial class MainWindow : Window {  private NotifyIcon notifyIcon;  public MainWindow()  {   InitializeComponent();   SetNotifyIcon();   this.Hide();  }  #region NotifyIcon  private void SetNotifyIcon()  {   this.notifyIcon = new NotifyIcon();   this.notifyIcon.BalloonTipText = "磁盘清理工具";   this.notifyIcon.ShowBalloonTip(2000);   this.notifyIcon.Text = "磁盘清理工具:每20天清理一次";   this.notifyIcon.Icon = System.Drawing.Icon.ExtractAssociatedIcon(Application.ExecutablePath);   this.notifyIcon.Visible = true;   //打开菜单项   MenuItem open = new MenuItem("打开");   open.Click += new EventHandler(Show);   //退出菜单项   MenuItem exit = new MenuItem("退出");   exit.Click += new EventHandler(Close);   //关联托盘控件   MenuItem[] childen = new MenuItem[] { open, exit };   notifyIcon.ContextMenu = new ContextMenu(childen);   this.notifyIcon.MouseDoubleClick += new MouseEventHandler((o, e) =>   {    if (e.Button == MouseButtons.Left) this.Show(o, e);   });  }  private void Show(object sender, EventArgs e)  {   this.Visibility = Visibility.Visible;   this.ShowInTaskbar = true;   this.Activate();  }  private void Hide(object sender, EventArgs e)  {   this.ShowInTaskbar = false;   this.Visibility = Visibility.Hidden;  }  private void Close(object sender, EventArgs e)  {   System.Windows.Application.Current.Shutdown();  }  #endregion  #region 窗口  private void MinimizeButton_OnClick(object sender, RoutedEventArgs e)  {   WindowState = WindowState.Minimized;  }  private void CloseButton_OnClick(object sender, RoutedEventArgs e)  {   this.Hide();  }  private void HeaderGrid_OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)  {   if (e.ButtonState == MouseButtonState.Pressed)   {    this.DragMove();   }  }  #endregion }

禁用多进程启动

//禁止双进程 bool canCreateNew; using (System.Threading.Mutex m = new System.Threading.Mutex(true, System.Windows.Forms.Application.ProductName, out canCreateNew)) {  if (!canCreateNew)  {   this.Shutdown();  } }

删除原有进程

/// <summary> /// 删除原有进程 /// </summary> /// <param name="processName"></param> private void KillProcess(string processName) {  //得到所有打开的进程   try  {   Process currentProcess = Process.GetCurrentProcess();   var processes = Process.GetProcessesByName(processName).Where(process=> process.Id!=currentProcess.Id);   foreach (Process thisproc in processes)   {    //找到程序进程,kill之。    if (!thisproc.CloseMainWindow())    {     thisproc.Kill();    }   }  }  catch (Exception ex)  {      } }

设置开机自启动

private void SetAppAutoRun(bool autoRun) {  if (autoRun) //设置开机自启动   {   string path = System.Windows.Forms.Application.ExecutablePath;   RegistryKey rk = Registry.LocalMachine;   RegistryKey rk2 = rk.CreateSubKey(@"Software/Microsoft/Windows/CurrentVersion/Run");   rk2.SetValue("JcShutdown", path);   rk2.Close();   rk.Close();  }  else //取消开机自启动   {   RegistryKey rk = Registry.LocalMachine;   RegistryKey rk2 = rk.CreateSubKey(@"Software/Microsoft/Windows/CurrentVersion/Run");   rk2.DeleteValue("JcShutdown", false);   rk2.Close();   rk.Close();  } }

App.cs中完整代码:

public partial class App : Application {  public App()  {   //禁止双进程   bool canCreateNew;   using (System.Threading.Mutex m = new System.Threading.Mutex(true, System.Windows.Forms.Application.ProductName, out canCreateNew))   {    if (!canCreateNew)    {     this.Shutdown();    }   }   SetAppAutoRun(true);   Startup += App_Startup;  }  private void SetAppAutoRun(bool autoRun)  {   if (autoRun) //设置开机自启动    {    MessageBox.Show("设置开机自启动,需要修改注册表", "提示"); // hovertree.com    string path = System.Windows.Forms.Application.ExecutablePath;    RegistryKey rk = Registry.LocalMachine;    RegistryKey rk2 = rk.CreateSubKey(@"Software/Microsoft/Windows/CurrentVersion/Run");    rk2.SetValue("JcShutdown", path);    rk2.Close();    rk.Close();   }   else //取消开机自启动    {    MessageBox.Show("取消开机自启动,需要修改注册表", "提示");    RegistryKey rk = Registry.LocalMachine;    RegistryKey rk2 = rk.CreateSubKey(@"Software/Microsoft/Windows/CurrentVersion/Run");    rk2.DeleteValue("JcShutdown", false);    rk2.Close();    rk.Close();   }  }  private void App_Startup(object sender, StartupEventArgs e)  {   new AutoCleanCacheHelper(CleanCacheVeiwModel.ViewModel).Start();  } }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持VEVB武林网。


注:相关教程知识阅读请移步到c#教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表