好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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

本文为大家分享了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测试数据

     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();

   }

  }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://HdhCmsTestcnblogs测试数据/kybs0/p/9891448.html

dy("nrwz");

查看更多关于C#程序启动项的设置方法的详细内容...

  阅读:45次