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

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

18.03.2015, 13:55. Показов 25457. Ответов 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
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 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
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 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
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 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
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 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
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 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
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 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
Ответ Создать тему
Новые блоги и статьи
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru