Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
1

Слишком много MsgBox в таймере при проверке

09.10.2010, 14:17. Показов 1634. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа проверяет разрешён ли в реестре explorer.exe и если нет выводит окно и предлагает включить explorer.exe но таймер снова через 5 секунд проверяет и если не нажать да то выводить 2 окно потом 3 и 4 и так далее .
Как это можно исправить ?
Вот код
VB.NET
1
2
3
4
5
6
7
8
9
   Dim Explorer As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        If Explorer = "explorer.exe" Then
            Label2.Text = "В реестре разрешён "
        Else
            Label2.Text = "В реестре запрещён "
            MsgBox(" Explorer.exe запрещён в реестре . Разрешить explorer.exe ? ", MsgBoxStyle.YesNo)
            If MsgBoxResult.Yes Then
                My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "explorer.exe")
            End If
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.10.2010, 14:17
Ответы с готовыми решениями:

error C2078: слишком много инициализаторов при создании массива
Создаю текстовый массив. Выдает ошибку "error C2078: слишком много инициализаторов". При создании...

слишком много аргументов в вызове функции или как создать много файлов на рабочем столе
Мне нужно создать на рабочем столе очень много файлов вот команда для создания 1 файла wchar_t...

Сайт CodeWars при проверке решения выдаёт ошибку, при проверке в VisualStudio ошибки нет
Задача написать метод,который будет проверять порядок круглых скобок. Написал код, проверил в...

При компиляции выдает ошибку "C2078: слишком много инициализаторов" при вызове MessageBox
Здравствуйте! Уже целый день бьюсь над заданием. Осталась самая малость. Помогите, пожалуйста! ...

18
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:05 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

После мессаги попробуй написать Exit Sub
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:06  [ТС] 3
Памирыч посмотри личные сообщения и напиши что думаешь тут .
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:07 4
Или сразу после Else
0
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:07  [ТС] 5
не в новой теме , вообще я пытался сделать что бы программа предлагала в окне разрешить в реестре explorer.exe , а вот что вышло программа при каждом включении разрешает explorer.exe
Как это можно исправить ?
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:08 6
Этот код не запускает Эксплорер, он лишь восстанавливает его при запуске компьютера
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:15  [ТС] 7
Я это и имел ввиду что программа разрешает в реестре explorer.exe то ка не как мне надо , мне нужно что бы если explorer.exe не разрешён в реестре открывалось окно msgbox и предлагало включить explorer.exe , а не просто при включении программы explorer.exe разрешало в реестре .

Добавлено через 2 минуты
Я ваще не понимаю как программа может разрешать explorer.exe если я даже Да в msgbox не нажал
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:16 8
Вопрос был про многочисленность мессиджбоксов, если не ответить программе вовремя. Ты решил эту задачу?

Добавлено через 28 секунд
Теперь понял вопрос
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:17  [ТС] 9
Ага решил немного по другому , но и по твоему попробую .
Возник теперь и вопрос о том почему программа разрешает explorer.exe без нажатие на кнопу Да ?
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:18 10
VB.NET
1
2
3
 If MsgBox("Promt", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "") = MsgBoxResult.Yes Then
            'Your Code Here
        End If
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:30  [ТС] 11
Памирыч сделал немного по другому но думаю дело не в этом .
Что же я неправильно в коде делаю ?
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
Option Compare Text
Public Class Form1
    Dim Cls As Boolean = True
    Dim Explorer1 As Boolean
    Dim FullPath As String
    Public Sub Обновление()
        Dim E As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        If E = "explorer.exe" Then
            Label2.Text = "В реестре разрешён "
 
        Else
            Label2.Text = "В реестре запрещён "
 
        End If
       
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Explorer As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        If Explorer = "explorer.exe" Then
            Label2.Text = "В реестре разрешён "
        Else
            Label2.Text = "В реестре запрещён "
            Explorer1 = True
            If Explorer1 = True Then
                Timer1.Enabled = False
                MsgBox(" Explorer.exe запрещён в реестре . Разрешить explorer.exe ? ", MsgBoxStyle.YesNo)
            End If
            If MsgBoxResult.Yes Then
                My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "explorer.exe")
                Timer1.Enabled = True
            End If
            If MsgBoxResult.No Then
                Explorer1 = False
                Timer1.Enabled = True
            End If
            End If
            Dim P() As Process = Process.GetProcesses
            Dim Exs As Boolean = False
            Dim OurProcess As String = "explorer"
            For Each M As Process In P
                Try
                    If M.ProcessName = OurProcess Then
                        Exs = True
                        FullPath = M.MainModule.FileName
                    End If
                Catch ex As Exception
                End Try
            Next
            If Exs = False Then
                Process.Start(FullPath)
            End If
    End Sub
 
    Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
        Me.ShowInTaskbar = True
        Me.Opacity = 100%
        Me.Show()
        Cls = True
    End Sub
 
    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Me.Opacity = 0%
 
        Me.ShowInTaskbar = False
        e.Cancel = Cls
        Me.Hide()
        Cls = False
    End Sub 
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Cls = False
        Close()
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Обновление()
     
        Dim Exs As Boolean
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\", "Компьютерный щит", My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe")
        If Exs = False Then
            Label1.Text = "Процесс: Работает "
        End If
        If Exs = True Then
            Label1.Text = "Процесс: не работает "
        End If
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        Обновление()
        Explorer1 = True
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "explorer.exe")
        Обновление()
        Explorer1 = True
    End Sub
 
    Private Sub ВыключитьПрограммуToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ВыключитьПрограммуToolStripMenuItem.Click
        Cls = False
        Close()
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If Timer1.Enabled = True Then
            Timer1.Enabled = False
            NotifyIcon1.Icon = My.Resources.Программа_2
            Me.Icon = My.Resources.Программа_2
            Button4.Text = "Возобновить защиту"
        Else
            Timer1.Enabled = True
            Button4.Text = "Приостановить защиту"
            NotifyIcon1.Icon = My.Resources.Программа
            Me.Icon = My.Resources.Программа
        End If
    End Sub
End Class
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:37 12
В чужом коде разбираться - это темный лес.
Что конкретно не работает и в какой процедуре?
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:39  [ТС] 13
Я сам не знаю что и где не работает опять программа сама разрешает explorer.exe .
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:40 14
Дак правильно, ты же не переправил код как я посоветовал (с мессадж)
И потом, каково назначение процедуры Обновление()?
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:49  [ТС] 15
Обновление
не знаю просто как по другому сделать что бы текст обновлялся при загрузке формы и нажатии на кнопки .

Добавлено через 1 минуту
Спасибо всё заработало
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:52 16
Цитата Сообщение от OVSite Посмотреть сообщение
Обновление
Все понял, там в лейбл пишется, я перепутал.
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 15:52  [ТС] 17
Теперь стало снова открываться много msgbox
Что я опять неправильно сделал ?
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
Option Compare Text
Public Class Form1
    Dim Cls As Boolean = True
    Dim Explorer1 As Boolean
    Dim FullPath As String
    Public Sub Обновление()
        Dim E As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        If E = "explorer.exe" Then
            Label2.Text = "В реестре разрешён "
 
        Else
            Label2.Text = "В реестре запрещён "
 
        End If
       
    End Sub
 
    Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim Explorer As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        If Explorer = "explorer.exe" Then
            Label2.Text = "В реестре разрешён "
        Else
            Label2.Text = "В реестре запрещён "
            Explorer1 = True
            If Explorer1 = True Then
                Timer1.Enabled = False
            If MsgBox("Explorer.exe запрещён в реестре . Разрешить explorer.exe ?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "") = MsgBoxResult.Yes Then
                My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "explorer.exe")
                    Обновление()
            Else
                Explorer1 = False
                Timer1.Enabled = True
            End If
            End If
            End If
            Dim P() As Process = Process.GetProcesses
            Dim Exs As Boolean = False
            Dim OurProcess As String = "explorer"
            For Each M As Process In P
                Try
                    If M.ProcessName = OurProcess Then
                        Exs = True
                        FullPath = M.MainModule.FileName
                    End If
                Catch ex As Exception
                End Try
            Next
            If Exs = False Then
                Process.Start(FullPath)
            End If
    End Sub
 
    Private Sub NotifyIcon1_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.MouseDoubleClick
        Me.ShowInTaskbar = True
        Me.Opacity = 100%
        Me.Show()
        Cls = True
    End Sub
 
    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        Me.Opacity = 0%
 
        Me.ShowInTaskbar = False
        e.Cancel = Cls
        Me.Hide()
        Cls = False
    End Sub 
 
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Cls = False
        Close()
    End Sub
 
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Обновление()
     
        Dim Exs As Boolean
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\", "Компьютерный щит", My.Application.Info.DirectoryPath & "\" & My.Application.Info.AssemblyName & ".exe")
        If Exs = False Then
            Label1.Text = "Процесс: Работает "
        End If
        If Exs = True Then
            Label1.Text = "Процесс: не работает "
        End If
    End Sub
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        Обновление()
        Explorer1 = True
    End Sub
 
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
        My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "explorer.exe")
        Обновление()
        Explorer1 = True
    End Sub
 
    Private Sub ВыключитьПрограммуToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ВыключитьПрограммуToolStripMenuItem.Click
        Cls = False
        Close()
    End Sub
 
    Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
        If Timer1.Enabled = True Then
            Timer1.Enabled = False
            NotifyIcon1.Icon = My.Resources.Программа_2
            Me.Icon = My.Resources.Программа_2
            Button4.Text = "Возобновить защиту"
        Else
            Timer1.Enabled = True
            Button4.Text = "Приостановить защиту"
            NotifyIcon1.Icon = My.Resources.Программа
            Me.Icon = My.Resources.Программа
        End If
    End Sub
End Class
0
Почетный модератор
21414 / 9149 / 1083
Регистрация: 11.04.2010
Сообщений: 11,014
09.10.2010, 15:55 18
В таймере после Else попробуй вписать Exit Sub
1
171 / 169 / 1
Регистрация: 22.08.2010
Сообщений: 1,251
09.10.2010, 17:06  [ТС] 19
Вот как поставил
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    Dim Explorer As String = My.Computer.Registry.GetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "0")
        If Explorer = "explorer.exe" Then
            Label2.Text = "В реестре разрешён "
        Else
 
            Label2.Text = "В реестре запрещён "
            Explorer1 = True
            If Explorer1 = True Then
                Timer1.Enabled = False
                If MsgBox("Explorer.exe запрещён в реестре . Разрешить explorer.exe ?", MsgBoxStyle.Question + MsgBoxStyle.YesNo, "") = MsgBoxResult.Yes Then
                    My.Computer.Registry.SetValue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", "Shell", "explorer.exe")
                    Обновление()
                Else
                    Explorer1 = False
                    Timer1.Enabled = True
                End If
            End If
        End If
        Exit Sub
не помогло .

Добавлено через 1 час 9 минут
Всё нашол как исправить просто мне по внимательней быть надо
0
09.10.2010, 17:06
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.10.2010, 17:06
Помогаю со студенческими работами здесь

Как исправить ситуацию в mathcad prime 2.0 при построении графиков - слишком много переменных-диапазонов
Доброй ночи! Я так и не нашла ясного ответа, как исправить ситуацию в mathcad prime 2.0 при...

Pascal N-IDE, оператор function, ошибка "слишком мало или слишком много аргументов передаются функции arccos"
program gg; uses crt; var x1,x2,x3,x4,y1,y2,y3,y4: integer; a,b,c,d,n,k,l,m:real;...

При решении дифференциальных уравнений выдает ошибку: "Слишком много начальных условий"
При решении дифференциальных уравнений выдает ошибку, слишком много начальных условий. Второй день...

Слишком много писем
Доброго времени суток! Почтовая прога не в силах справиться с количеством писем. При попытке...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru