1
0

Form1.cs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading.Tasks;
  9. using System.Windows.Forms;
  10. using Microsoft.Win32;
  11. namespace Автозагрузка
  12. {
  13. public partial class Form1 : Form
  14. {
  15. public Form1()
  16. {
  17. InitializeComponent();
  18. }
  19. /// <summary>
  20. /// добавление/удаление из автозагрузки
  21. /// </summary>
  22. /// <param name="nameApp">имя приложения</param>
  23. /// <param name="autorun">
  24. /// True - добавить в автозагрузку
  25. /// False - удалить из автозагрузки
  26. /// </param>
  27. void SetAutorun(string nameApp, bool autorun)
  28. {
  29. // открыть ключ для записи
  30. RegistryKey k = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true);
  31. // добавление в автозагрузку
  32. if (autorun)
  33. {
  34. // имя exe-файла текущего приложения с путем доступа
  35. string exeFileCurrentApp = Application.ExecutablePath;
  36. k.SetValue(nameApp, $"\"{exeFileCurrentApp}\" tray");
  37. }
  38. else
  39. {
  40. // удалить из автозагрузки
  41. k.DeleteValue(nameApp, false);
  42. }
  43. k.Close();
  44. }
  45. private void cbxAutorun_CheckedChanged(object sender, EventArgs e)
  46. {
  47. SetAutorun("MyApplication", cbxAutorun.Checked);
  48. }
  49. private void Form1_Load(object sender, EventArgs e)
  50. {
  51. // открыть ключ автозагрузки
  52. RegistryKey k = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");
  53. // если есть "MyApplication", то установить CheckBox
  54. cbxAutorun.Checked = k.GetValue("MyApplication") != null;
  55. // закрыть ключ
  56. k.Close();
  57. // параметры, передаваемые в приложение
  58. string[] arg = Environment.GetCommandLineArgs();
  59. // если приложению передаются параметры
  60. if (arg.Length > 1)
  61. {
  62. // если приложение запущено из автозагрузки (массив arg содержит tray)
  63. if (arg.Contains("tray"))
  64. {
  65. // свернуть окно приложения
  66. this.WindowState = FormWindowState.Minimized;
  67. this.ShowInTaskbar = false; // убрать с панели задач
  68. }
  69. }
  70. }
  71. private void Form1_Resize(object sender, EventArgs e)
  72. {
  73. if (this.WindowState == FormWindowState.Minimized)
  74. {
  75. notifyIcon1.Visible = true;
  76. this.Hide(); // скрыть форму
  77. }
  78. }
  79. private void Form1_FormClosing(object sender, FormClosingEventArgs e)
  80. {
  81. }
  82. private void notifyIcon1_DoubleClick(object sender, EventArgs e)
  83. {
  84. this.Show(); // показать форму
  85. this.WindowState = FormWindowState.Normal;
  86. notifyIcon1.Visible = false; // выключить пиктограмму
  87. this.ShowInTaskbar = true; // отображать форму на панели задач
  88. }
  89. }
  90. }