Я пытался создать программу, которая будет воспроизводить звук при запуске (потому что Microsoft теперь их явно ненавидит) и требует, чтобы форма полностью скрывалась при запуске программы, так что это просто звук, но мне также нужен доступформа, чтобы изменить настройки, когда мне нужно, чтобы успешно скрыть форму, я использую этот код:
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not Me.IsHandleCreated Then
Me.CreateHandle()
value = False
End If
MyBase.SetVisibleCore(value)
End Sub
, который, насколько я понимаю, переопределяет запуск в классе Application и предотвращает запуск формы запуска,но я сделал так, чтобы он воспроизводил звук только в том случае, если через ярлык передается аргумент -t
, так что я могу получить доступ к основной форме, чтобы легче менять настройки, когда мне нужно, вот как выглядит полный кодВы можете лучше понять, о чем я говорю
Protected Overrides Sub SetVisibleCore(ByVal value As Boolean)
If Not Me.IsHandleCreated Then
Me.CreateHandle()
value = False
End If
MyBase.SetVisibleCore(value)
Dim clArgs() As String = Environment.GetCommandLineArgs()
If clArgs.Count() = 2 Then
For i As Integer = 1 To 1 Step 1
If clArgs(i) = "-t" Then
Try
My.Computer.Audio.Play(My.Settings.startSound, AudioPlayMode.Background)
Catch ex As Exception
End Try
Else
Me.Show()
End If
Next
End If
End Sub
Итак, чтобы подвести итог тому, что здесь происходит, начнем с проверки, есть ли аргумент -t
, переданный в CommandLineArgs
, и еслион будет воспроизводить звук, фактически не запуская форму, но если его нет, он запустит форму, но дляпо какой-то причине, если у меня в коде Me.show()
, это вызовет переполнение стека, и я понятия не имею, почему это происходит, за исключением того, что код, скрывающий эту форму, вызывает его