Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.68/121: Рейтинг темы: голосов - 121, средняя оценка - 4.68
 Аватар для SeregaBarmaley
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204

Автозапуск программы при загрузке ОС и ее сворачивание в трей

18.03.2015, 13:55. Показов 24969. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем написал программу, которая запускается при загрузке ОС.

Всё в общем замечательно, только есть одна мелочь, а именно: мне нужно, чтобы при загрузке компьютера программа запускалась свёрнутой в трей. В остальных случаях же при запуске программы в системе руками она должна отображаться на экране. У меня она по стандарту отображается на экране главной формой. Так и должно быть, но какой триггер изпользовать, чтобы программа при запуске компьютера запускалась свёрнутой в трей?

А то у меня, при включении компьютера, программа показывается на экране и мне нужно её каждый раз сворачивать в трей.


Вот программный код:

Предварительно нужно создать объект "NotifyIcon1" и "ContextMenuStrip1".
Добавить в "ContextMenuStrip1" пункт "Выход".
Добавить в "NotifyIcon1" в свойства "Icon" иконку 16х16 пикселей.
Добавить в "NotifyIcon1" в свойства "ContextMenuStrip" наш уже созданный "ContextMenuStrip1".

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
Public Class frmMain
    'Объявление переменной с путём, куда будет записываться автозапуск программы
    Public autostart As Microsoft.Win32.RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows\CurrentVersion\Run", True)
 
    '***************************************************************************************
    '[Начало] Манипуляции с формой и треем
    '*******************************************************************************
 
    'Нажатие на иконку в трее, чтобы свернуть\развернуть программу.
    Private Sub NotifyIcon1_MouseClick(sender As Object, e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseClick
        'Иконка в трее реагирует только на Mouse1(левая кнопка мыши)
        If e.Button = Windows.Forms.MouseButtons.Left Then
            If Me.WindowState = FormWindowState.Normal Then
                'Свернуть форму в трей
                Me.WindowState = FormWindowState.Minimized
            Else
                'Возстановление формы из трея. По одиночному клику.
                Me.Show()
                Me.WindowState = FormWindowState.Normal
            End If
        End If
    End Sub
 
    'Выход из программы. Только так можно выйти, потому что программа будет сворачиваться в трей при нажатии на "крестик".
    Private Sub ВыходToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles ВыходToolStripMenuItem.Click
        'Убирание иконки из трея, чтобы при закрытии программы, иконка в трее не висела в виде фантома.
        Me.NotifyIcon1.Icon = Nothing
        End
    End Sub
 
    'При сворачивании программы, она прячется в трей.
    Private Sub frmMain_SizeChanged(sender As Object, e As System.EventArgs) Handles Me.SizeChanged
        If Me.WindowState = FormWindowState.Minimized Then
            Me.Hide()
        End If
    End Sub
 
    'Закрытие программы(нажатие на крестик).
    Private Sub frmMain_FormClosing(sender As Object, e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        'Если нажал на крестик человек(User)
        If e.CloseReason = CloseReason.UserClosing Then
            'Не закрывать форму(крестик работать не будет)
            e.Cancel = True
            'Свернуть форму в трей
            Me.WindowState = FormWindowState.Minimized
        End If
    End Sub
 
    '*******************************************************************************
    '[Конец] Манипуляции с формой и треем
    '***************************************************************************************
 
 
    'Кнопка добавления программы в автозапуск.
    Private Sub btnAddAutoRun_Click(sender As System.Object, e As System.EventArgs) Handles btnAddAutoRun.Click
        autostart.SetValue("Название_Программы v1.0.0.0", Application.ExecutablePath)
    End Sub
 
    'Кнопка удаление программы из автозапуска.
    Private Sub btnDelAutoRun_Click(sender As System.Object, e As System.EventArgs) Handles btnDelAutoRun.Click
        autostart.DeleteValue("Название_Программы v1.0.0.0")
    End Sub
End Class
Вопрос:
Как сделать так, чтобы при включении компьютера программа запускалась свёрнутой в трей?
В остальных случаях же при запуске программы в системе руками она должна отображаться на экране.

Программа торрент работает как я хочу: при автозапуске она запускается в трее, а если её запустить в системе то показывается форма.
1
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.03.2015, 13:55
Ответы с готовыми решениями:

Автозапуск программы при загрузке Windows 8
Добрый день! Я не могу открыть "MGCONFIG" с помощью "Выполнить". Каким образом можно добавить программу в авто запуск ПО? Может быть где-то...

Сворачивание программы в трей
Можна ли в трей панели задач свернуть програмку возле часов!!!

Сворачивание программы в трей
И снова добрый вечер, пишет вам очередной раз бедный инженер который пытается упростить себе жизнь :) Подскажите пожалуйста как...

11
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.03.2015, 14:04
Я не знаю уровень Ваших познаний, но думаю, код писать Вы умеете, поэтому вся кухня состоит из нескольких простых вещей:
1) При автозапуске передавать любой параметр программе, например, -minimize (условно, можно любой)
2) При получении такого параметра - свернуть приложение.

То есть Ваш вопрос сейчас состоит в чтении параметра запуска, только и всего
Сворачивать программу программно, я думаю, Вы и так умеете
0
 Аватар для SeregaBarmaley
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
18.03.2015, 14:19  [ТС]
Ты имеешь ввиду вот такой код?

VB.NET
1
2
3
4
'Загрузка формы при первом запуске приложения.
Private Sub frmMain_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        Me.WindowState = FormWindowState.Minimized
End Sub
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.03.2015, 14:22
Верно

Но параметр надо прикрутить
0
 Аватар для SeregaBarmaley
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
18.03.2015, 14:25  [ТС]
Дело в том, что код, приведённые выше, действительно работает. Но проблема в том, что этот код работает постоянно. А мне нужно, чтобы этот код работал только при загрузке компьютера. В остальных случаях, нужно чтобы программа при запуске показывалась на экране, а не сворачивалась. Сворачиваться она должна только при первом запуске, когда система загружается.
Как я писал выше, программа uTorrent работает по такому принципу.

Триггером должно быть первый запуск программы на только что включённом компьютере.
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.03.2015, 14:26
Цитата Сообщение от SeregaBarmaley Посмотреть сообщение
мне нужно, чтобы этот код работал только при загрузке компьютера
Я же Вам написал, что надо делать еще в посте №2:
Цитата Сообщение от Памирыч Посмотреть сообщение
1) При автозапуске передавать любой параметр программе, например, -minimize (условно, можно любой)
2) При получении такого параметра - свернуть приложение.
1
 Аватар для SeregaBarmaley
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
18.03.2015, 14:47  [ТС]
Вопрос: чем переданный параметр программе при первом запуске, будет отличаться от переданного параметра программе при обычном запуске?
Я реально не понимаю. Мне нужен триггер который бы отвечал за первый запуск при загрузке системы.
Я понял суть предложенного тобой алгоритма, я только не пойму как мне его осуществить
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.03.2015, 14:52
Цитата Сообщение от SeregaBarmaley Посмотреть сообщение
чем переданный параметр программе при первом запуске, будет отличаться от переданного параметра программе при обычном запуске
Его наличием.

При простом запуске никаких параметров не передается.

Если у Вас затруднения - пишите, будем разбираться вместе
0
 Аватар для SeregaBarmaley
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
18.03.2015, 14:55  [ТС]
У меня затруднение. Я сюда пишу, потому что долго не могу решить проблему. Мне нужно понять как будет выглядеть этот триггер.
Есть псевдокод "При автозапуске", как его перевести в язык "vb.net"?
В этом то суть. Вот например триггер на псевдокоде "при загрузке формы", выглядит на языке "vb.net" как в третьем посте.
А как на языке "vb.net" будет "запуск программы при включении компьютера"?
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
18.03.2015, 15:38
Лучший ответ Сообщение было отмечено SeregaBarmaley как решение

Решение

SeregaBarmaley, сейчас накидаю нормального кода.
Вы мне вот что скажите - как программа у Вас попадает в автозагрузку?
Кодом или вручную?

Добавлено через 25 минут
Ответа не дождался. Поэтому предлагаю записывать программу в автозапуск программно, сразу с параметром:
VB.NET
1
My.Computer.Registry.SetValue("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\", "Моя прога", Application.ExecutablePath & " /minimize")
Далее, проверяем в загрузке формы, передаются ли аргументы и если да, то проверяем их. Если аргумент равен заданному, сворачиваем форму и прячем ее значок с панели задач

VB.NET
1
2
3
4
5
6
7
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim Args() As String = System.Environment.GetCommandLineArgs()
        If Args.Length > 1 AndAlso Args(1) = "/minimize" Then
            Me.WindowState = FormWindowState.Minimized
            Me.ShowInTaskbar = False
        End If
    End Sub

Даблклик по иконке в трее

VB.NET
1
2
3
4
    Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
        WindowState = FormWindowState.Normal
        Me.ShowInTaskbar = True
    End Sub
9
 Аватар для SeregaBarmaley
24 / 24 / 8
Регистрация: 01.10.2012
Сообщений: 204
20.03.2015, 15:39  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
Вы мне вот что скажите - как программа у Вас попадает в автозагрузку?
У меня же в первом посте написано как. Программным путём, через запись в реестр.

VB.NET
1
2
3
4
    'Кнопка добавления программы в автозапуск.
    Private Sub btnAddAutoRun_Click(sender As System.Object, e As System.EventArgs) Handles btnAddAutoRun.Click
        autostart.SetValue("Название_Программы v1.0.0.0", Application.ExecutablePath)
    End Sub

Попробовал код, он работает. При запуске программы из системы триггер не срабатывает и программа показывает главную форму. А когда компьютер загружается в первый раз, то триггер срабатывает и программа запускается уже свёрнутой в трей.

В реестре нашёл и программу uTorrent у которой тоже есть триггер сворачивания программы при первом запуске.
"C:\Program Files\uTorrent\uTorrent.exe" /MINIMIZED

В общем всё работает.
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.03.2015, 15:41
Ну еще бы оно не работало)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.03.2015, 15:41
Помогаю со студенческими работами здесь

Сворачивание программы в трей
Подскажите, плиз, как сделать так, чтобы при нажатии на Minimize форма сворачивалась в трей, где управление программой осуществлялось бы...

Сворачивание программы в трей
привет всем. вопрос такой...как мне по нажатию на "красный крестик" (выход из программы) сделать так, чтобы программа сворачивалась в трей...

Сворачивание программы и трей
Доброго времени всем. Помогите с реализацией сворачивания программы и занесения ее в трей. И так, начну: У меня есть 2 формы. На...

Сворачивание программы в трей с кнопки
Всем привет ! как можно свернуть программу в трей по нажатию кнопки а не самой формы стандартное сворачивание программы ...

Сворачивание программы в трей. Как?
Добрый вечер! Подскажите пожалуйста, как можно сделать так, что программа сворачивалась в трей (возле часов) ?? если можно на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru