Service Status in Label anzeigen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 23 Antworten in diesem Thema. Der letzte Beitrag () ist von xxlynusxx.

    Service Status in Label anzeigen

    Hallo Community.

    Quellcode

    1. Imports System.ServiceProcess
    2. Public Class Form1
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Try
    5. Dim sc As New System.ServiceProcess.ServiceController("ServiceName")
    6. sc.Start()
    7. Label1.Text = ("Dienst gestartet!")
    8. Catch
    9. Label1.Text = ("Starten Fehlgeschlagen")
    10. End Try
    11. End Sub
    12. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    13. Try
    14. Dim sc As New System.ServiceProcess.ServiceController("ServiceNem")
    15. sc.Stop()
    16. Label1.Text = ("Dienst beendet")
    17. Catch
    18. Label1.Text = ("Beenden Fehlgeschlagen")
    19. End Try
    20. End Sub
    21. End Class


    Wie kann ich zusätzlich den Status (Gestartet/Beendet) per Label ausgeben?

    Vielen Dank
    Der ServiceController besitzt eine Eigenschaft Status. Das konnte ich sehr leicht googlen.

    ~ Alex-Digital :D
    ~ Alex-Digital :D

    if(!Internet.VBP.Get<User>("Alex-Digital").IsOnline) this.Close(); :D

    Alex-Digital schrieb:

    Eigenschaft Status
    Jou.
    @xxlynusxx Allerdings sendet ServiceController keine Events bei Änderung, also müsstest Du die Änderung pollen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    xxlynusxx schrieb:

    aber das funktioniert nicht bei mir
    Mit welchem Code?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Edit: Hat funktioniert:

    VB.NET-Quellcode

    1. Imports System.ServiceProcess
    2. Public Class vpnchange
    3. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    4. Try
    5. Dim sc As New System.ServiceProcess.ServiceController("openvpnservice")
    6. sc.Start()
    7. If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
    8. Label1.Text = ("Beendet")
    9. Else
    10. Label1.Text = ("Gestartet")
    11. End If
    12. sc.Refresh()
    13. Catch
    14. Label1.Text = ("Starten Fehlgeschlagen")
    15. End Try
    16. End Sub
    17. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    18. Try
    19. Dim sc As New System.ServiceProcess.ServiceController("openvpnservice")
    20. sc.Stop()
    21. If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
    22. Label1.Text = ("Beendet")
    23. Else
    24. Label1.Text = ("Gestartet")
    25. End If
    26. sc.Refresh()
    27. Catch
    28. Label1.Text = ("Beenden Fehlgeschlagen")
    29. End Try
    30. End Sub
    31. Private Sub vpnchange_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    32. Dim sc As New ServiceController("openvpnservice")
    33. If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
    34. Label1.Text = ("Beendet")
    35. Else
    36. Label1.Text = ("Gestartet")
    37. End If
    38. sc.Refresh()
    39. End Sub
    40. End Class


    Nun habe ich das Problem das wenn der Dienst z.B. gestartet ist und ich nochmal auf den Startbutton klicke ein Fehler ausgespuckt wird.

    Eine Ausnahme (erste Chance) des Typs "System.InvalidOperationException" ist in System.ServiceProcess.dll aufgetreten.

    Habe dazu nur "Unterbrechen bei folgendem Ausnahmezustand" gefunden. Das sagt mir aber überhaupt nix und meine Suche war erfolglos.

    Zudem würde ich noch gerne wissen wie ich das Programm ins Systemtray minimieren kann wenn man auf das X klickt. Auf dem Trayicon soll dann ein Kontextmenü mit nem Exit Button.


    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „xxlynusxx“ ()

    xxlynusxx schrieb:

    und ich nochmal auf den Startbutton klicke

    xxlynusxx schrieb:

    VB.NET-Quellcode

    1. Dim sc As New System.ServiceProcess.ServiceController("openvpnservice")
    Pack die Instanz in die Klasse.
    Wenn Du eine Aktion ausführen willst, musst Du vorher den Status abfragen und dann wissen, dass ein gestarteter Prozess nicht noch einmal gestartet werden kann.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Ich kann ja nicht aufhören mir immer wieder selber nen Bein zu stellen daher brauch ich nochmal eure Hilfe.

    Ich wollte die public IP anzeigen lassen wenn man den Dienst startet/beendet aber das dauert ja immer einen Moment bis alles umgeschaltet ist.
    Beim Start des Programms wird die aktuelle IP ausgegeben.

    Habe schon nen Timer eingebaut aber so bekomme ich immer eine Fehlermeldung.

    VB.NET-Quellcode

    1. Imports System.ServiceProcess
    2. Imports System.Net
    3. Public Class vpnchange
    4. Private Sub vpnchange_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    5. e.Cancel = True
    6. Me.Hide()
    7. NotifyIcon1.ShowBalloonTip(1000, "VPN Change minimiert", "Zum beenden rechtsklick auf das Icon.", ToolTipIcon.None)
    8. End Sub
    9. Private Sub NotifyIcon1_DoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles NotifyIcon1.DoubleClick
    10. Me.Show()
    11. Me.Activate()
    12. NotifyIcon1.Visible = True
    13. End Sub
    14. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    15. Try
    16. Dim sc As New System.ServiceProcess.ServiceController("openvpnservice")
    17. sc.Start()
    18. If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
    19. Label1.Text = ("Beendet")
    20. Else
    21. Label1.Text = ("Gestartet")
    22. End If
    23. sc.Refresh()
    24. Catch
    25. Label1.Text = ("Ist bereits gestartet!")
    26. End Try
    27. End Sub
    28. Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
    29. Try
    30. Dim sc As New System.ServiceProcess.ServiceController("openvpnservice")
    31. sc.Stop()
    32. If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
    33. Label1.Text = ("Beendet")
    34. Else
    35. Label1.Text = ("Gestartet")
    36. End If
    37. sc.Refresh()
    38. Catch
    39. Label1.Text = ("Ist bereits beendet!")
    40. End Try
    41. End Sub
    42. Private WithEvents _wC As New WebClient
    43. Private Sub vpnchange_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    44. _wC.Proxy = Nothing
    45. _wC.DownloadStringAsync(New Uri("http://checkip.dyndns.org/"), Nothing)
    46. NotifyIcon1.ContextMenuStrip = ContextMenuStrip1
    47. Dim sc As New System.ServiceProcess.ServiceController("openvpnservice")
    48. If sc.Status.Equals(ServiceControllerStatus.Stopped) Or sc.Status.Equals(ServiceControllerStatus.StopPending) Then
    49. Label1.Text = ("Beendet")
    50. Else
    51. Label1.Text = ("Gestartet")
    52. End If
    53. sc.Refresh()
    54. End Sub
    55. Private Sub _wC_DownloadStringCompleted(sender As Object, e As DownloadStringCompletedEventArgs) Handles _wC.DownloadStringCompleted
    56. Dim ip As String = e.Result.Split(New String() {"Current IP Address: ", "</body>"}, StringSplitOptions.RemoveEmptyEntries)(1)
    57. Me.Label3.Text = ip
    58. End Sub
    59. Private Sub exitToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ExitToolStripMenuItem.Click
    60. End
    61. NotifyIcon1.Visible = False
    62. End Sub
    63. Private Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
    64. _wC.Proxy = Nothing
    65. _wC.DownloadStringAsync(New Uri("http://checkip.dyndns.org/"), Nothing)
    66. End Sub
    67. End Class


    Und falls jemand Lust hat wäre es nett wenn das mal aufgeräumt werden könnte von jemanden der mehr Ahnung hat als ich^^

    Freu mich über eure Antworten.
    Timer gehört hier verboten. Langsam anlaufendes musste mittm Async-Pattern lösen: Async, Await und Task

    Aber ich hab mal die "schlimmsten" Sachen bereinigt - das waren:
    • TryCatchens, die das Debuggen verhindern TryCatch ist ein heißes Eisen
    • unnötige Abfragen (erst Service starten, und dann den Status abfragen - naja, der wird wohl Started sein , odr?)
    • Unsicheren Code ins Form_Shown verlegt - damit man Exceptions bekommt (zB bei mir gibts diesen Dienst überhaupt nicht)
    • Das immer wieder neu Instanzieren des Services reduziert auf einmal und das reicht.
    • Anwendung ordentlich beenden, inklusive des Service s

    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.ServiceProcess
    2. Imports System.Net
    3. Imports System.Threading.Tasks
    4. Public Class vpnchange
    5. Dim sc As ServiceController
    6. Private WithEvents _wC As New WebClient With {.Proxy = Nothing}
    7. Private Sub vpnchange_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    8. _wC.DownloadStringAsync(New Uri("http://checkip.dyndns.org/"), Nothing)
    9. AddHandler Me.FormClosing, AddressOf vpnchange_FormClosing
    10. End Sub
    11. Private Sub vpnchange_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    12. sc = New ServiceController("openvpnservice") 'so Wackelkandidaten erst im _Shown-Event instanzieren, sonst werden wertvolle Exceptions verschluckt
    13. EnableService(True)
    14. End Sub
    15. Private Sub vpnchange_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
    16. e.Cancel = True
    17. Me.Hide()
    18. NotifyIcon1.ShowBalloonTip(1000, "VPN Change minimiert", "Zum beenden rechtsklick auf das Icon.", ToolTipIcon.None)
    19. End Sub
    20. Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles NotifyIcon1.DoubleClick
    21. Me.Show()
    22. Me.Activate()
    23. NotifyIcon1.Visible = True
    24. End Sub
    25. Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    26. EnableService(True)
    27. End Sub
    28. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    29. EnableService(False)
    30. End Sub
    31. Async Sub EnableService(value As Boolean)
    32. If value Then
    33. Await task.Run(AddressOf sc.Start)
    34. Else
    35. Await task.Run(AddressOf sc.Stop)
    36. End If
    37. Label1.Text = sc.Status.ToString
    38. End Sub
    39. Private Sub _wC_DownloadStringCompleted(sender As Object, e As DownloadStringCompletedEventArgs) Handles _wC.DownloadStringCompleted
    40. Dim ip As String = e.Result.Split(New String() {"Current IP Address: ", "</body>"}, StringSplitOptions.RemoveEmptyEntries)(1)
    41. Me.Label3.Text = ip
    42. End Sub
    43. Private Sub exitToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ExitToolStripMenuItem.Click
    44. EnableService(False)
    45. NotifyIcon1.Dispose()
    46. RemoveHandler Me.FormClosing, AddressOf vpnchange_FormClosing
    47. Me.Close()
    48. End Sub
    49. End Class
    Schlimm auch deine Benamung, aber für die Wiedererkennung hab ich die so belassen.
    Und - da ich den Service nicht habe - weiß natürlich nicht, obs funktioniert.

    Dieser Beitrag wurde bereits 4 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Ich danke dir vielmals. Ich habe den Code mal C&P jedoch bekomme ich den 12 Fehler:

    Spoiler anzeigen
    Fehler 1 "EnableService" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 13 9 VPN Change
    Fehler 2 "EnableService" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 26 9 VPN Change
    Fehler 3 "EnableService" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 29 9 VPN Change
    Fehler 4 Deklaration erwartet. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 31 1 VPN Change
    Fehler 5 Die Anweisung kann nicht außerhalb einer Methode/eines mehrzeiligen lambda-Ausdrucks stehen. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 32 1 VPN Change
    Fehler 6 Deklaration erwartet. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 33 1 VPN Change
    Fehler 7 Die Anweisung kann nicht außerhalb einer Methode/eines mehrzeiligen lambda-Ausdrucks stehen. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 34 1 VPN Change
    Fehler 8 Deklaration erwartet. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 35 1 VPN Change
    Fehler 9 "End If" muss ein entsprechendes "If" voranstehen. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 36 1 VPN Change
    Fehler 10 Deklaration erwartet. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 37 1 VPN Change
    Fehler 11 "End Sub" muss ein entsprechendes "Sub" voranstehen. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 38 1 VPN Change
    Fehler 12 "EnableService" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden. C:\Users\xxx\Documents\Visual Studio 2010\Projects\VPN Change\VPN Change\Form1.vb 44 9 VPN Change



    Ich habe vorher noch nie etwas von Async, Await und Task gehört und habe daher mal etwas im Netz gesucht. Dazu habe ich ein Videotutorial gefunden. Die funktionsweise von Async, Await und Task ist mir nun bekannt aber ich kann trotzdem noch nicht richtig damit umgehen. Zu den Fehler habe ich auch leider nix gefunden.
    oh nein - keine Video-Tutorials!
    Wieso suchst du im Netz nach Video-Tutorials - ist das von mir verlinkte Tut so mangelhaft?

    Und der Fehler ist in meinem Tut doch bereits nach dem ersten Halb-Satz vollständig aufgeklärt:

    ErfinderDesRades schrieb:

    Mit VS2012 haben 2 neue Schlüsselworte Einzug gehalten

    Es liegt nicht an deiner Anleitung. Mir fällt es aus gesundheitlichen Gründen (Augen OP) zur Zeit schwer lange Texte zu lesen. Daher suche ich nach Quellen die mir "vorlesen" bzw es vorführen.^^ Sobald es wieder besser ist werde ich mich natürlich auch an deinem Tut vergreifen ;)
    Da wünsche ich dir gute besserung, und das Handicap ist schlecht - also ohne viel und gründliches Lesen kann man eiglich nicht programmieren

    naja, jdfs. in VisualStudio2010 muss man halt ältere Formen von Threading in Anschlag bringen:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.ServiceProcess
    2. Imports System.Net
    3. Imports System.IO
    4. Public Class VpnChange2
    5. Dim sc As ServiceController
    6. Private Sub vpnchange_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    7. AddHandler Me.FormClosing, AddressOf vpnchange_FormClosing
    8. End Sub
    9. Private Sub vpnchange_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    10. sc = New ServiceController("openvpnservice") 'so Wackelkandidaten erst im _Shown-Event instanzieren, sonst werden wertvolle Exceptions verschluckt
    11. _ServiceEnabler.BeginInvoke(True, AddressOf _ServiceEnabler.EndInvoke, Nothing)
    12. End Sub
    13. Private Sub vpnchange_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
    14. e.Cancel = True
    15. Me.Hide()
    16. NotifyIcon1.ShowBalloonTip(1000, "VPN Change minimiert", "Zum beenden rechtsklick auf das Icon.", ToolTipIcon.None)
    17. End Sub
    18. Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles NotifyIcon1.DoubleClick
    19. Me.Show()
    20. Me.Activate()
    21. NotifyIcon1.Visible = True
    22. End Sub
    23. Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    24. Dim dlg As Action = AddressOf GetMyIp
    25. dlg.BeginInvoke(AddressOf dlg.EndInvoke, Nothing)
    26. End Sub
    27. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    28. _ServiceEnabler.BeginInvoke(False, AddressOf _ServiceEnabler.EndInvoke, Nothing)
    29. End Sub
    30. Private _ServiceEnabler As New Action(Of Boolean)(AddressOf EnableService)
    31. Private Sub EnableService(value As Boolean)
    32. If value Then sc.Start() Else sc.Stop()
    33. Me.BeginInvoke(Sub() Label1.Text = sc.Status.ToString)
    34. End Sub
    35. Private Sub GetMyIp()
    36. Dim wr = WebRequest.Create("http://checkip.dyndns.org/")
    37. wr.Proxy = Nothing
    38. Using rsp = wr.GetResponse, rd = New StreamReader(rsp.GetResponseStream)
    39. Dim s = rd.ReadToEnd.Split({"Current IP Address: ", "</body>"}, StringSplitOptions.RemoveEmptyEntries)(1)
    40. Me.BeginInvoke(Sub() Label3.Text = s)
    41. End Using
    42. End Sub
    43. Private Sub exitToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ExitToolStripMenuItem.Click
    44. _ServiceEnabler.BeginInvoke(False, AddressOf _ServiceEnabler.EndInvoke, Nothing)
    45. NotifyIcon1.Dispose()
    46. RemoveHandler Me.FormClosing, AddressOf vpnchange_FormClosing
    47. Me.Close()
    48. End Sub
    49. End Class
    Funktioniert vielleicht, aber hat nicht viel Sinn, denn die Erklärungen bedeuten wieder längere Text-Arbeit.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „ErfinderDesRades“ ()

    Danke dir. Wird von Tag zu Tag besser aber es ist noch zu anstrengend. Ich programmiere ja nur aus Langeweile da spielen nicht geht^^

    Mit deinem Code funktionieren die Buttons nicht mehr zum starten/beenden des Dienstes. Wenn ich den Dienst per Hand starte/beende wird die richtige IP im Label per Button klick angezeigt. Im Label1 wird ständig "Running" angezeigt egal ob gestartet oder beendet.
    die IP hat ja nix mit dem Service zu tun.

    Und Label1 zeigt sc.Status.Tostring() an, wenn das nicht stimmt, kann ich auch nicht für.
    Wie gesagt: Testen kann ich grade das nicht, denn ich hab den Service garnet.

    Edit: Hab den Code nochmal editiert, weil bei Button2 hab ich EnableService(True) gehabt, und beabsichtigt ist wohl False.
    Schade, dann ist son ServiceController wohl nicht Threadsicher.
    Daraus folgt dann, dass es wohl keinen Weg gibt, zu vermeiden, dass die Anwendung einfriert, solange der Service am Starten ist.
    Da kann man den Code also auch einfach lassen
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Imports System.ServiceProcess
    2. Imports System.Net
    3. Imports System.IO
    4. Public Class VpnChange2
    5. Dim sc As ServiceController
    6. Private Sub vpnchange_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    7. AddHandler Me.FormClosing, AddressOf vpnchange_FormClosing
    8. End Sub
    9. Private Sub vpnchange_Shown(sender As Object, e As EventArgs) Handles Me.Shown
    10. sc = New ServiceController("openvpnservice") 'so Wackelkandidaten erst im _Shown-Event instanzieren, sonst werden wertvolle Exceptions verschluckt
    11. EnableService(True)
    12. End Sub
    13. Private Sub vpnchange_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)
    14. e.Cancel = True
    15. Me.Hide()
    16. NotifyIcon1.ShowBalloonTip(1000, "VPN Change minimiert", "Zum beenden rechtsklick auf das Icon.", ToolTipIcon.None)
    17. End Sub
    18. Private Sub NotifyIcon1_DoubleClick(ByVal sender As Object, ByVal e As EventArgs) Handles NotifyIcon1.DoubleClick
    19. Me.Show()
    20. Me.Activate()
    21. NotifyIcon1.Visible = True
    22. End Sub
    23. Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    24. Dim dlg As Action = AddressOf GetMyIp
    25. dlg.BeginInvoke(AddressOf dlg.EndInvoke, Nothing)
    26. End Sub
    27. Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    28. EnableService(False)
    29. End Sub
    30. Private Sub EnableService(value As Boolean)
    31. If value Then sc.Start() Else sc.Stop()
    32. Label1.Text = sc.Status.ToString
    33. End Sub
    34. Private Sub GetMyIp()
    35. Dim wr = WebRequest.Create("http://checkip.dyndns.org/")
    36. wr.Proxy = Nothing
    37. Using rsp = wr.GetResponse, rd = New StreamReader(rsp.GetResponseStream)
    38. Dim s = rd.ReadToEnd.Split({"Current IP Address: ", "</body>"}, StringSplitOptions.RemoveEmptyEntries)(1)
    39. Me.BeginInvoke(Sub() Label3.Text = s)
    40. End Using
    41. End Sub
    42. Private Sub exitToolStripMenuItem_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ExitToolStripMenuItem.Click
    43. EnableService(False)
    44. NotifyIcon1.Dispose()
    45. RemoveHandler Me.FormClosing, AddressOf vpnchange_FormClosing
    46. Me.Close()
    47. End Sub
    48. End Class
    Eine Ausnahme (erste Chance) des Typs "System.InvalidOperationException" ist in System.ServiceProcess.dll aufgetreten.

    Edit: das problem ist glaube ich das er den dienst automatisch bei programmstart ausführen/beenden will. wenn der aber schon gestartet/beendet ist gibts den fehler.^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „xxlynusxx“ ()