IP Changer funktioniert nicht

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von LuigiMario.

    IP Changer funktioniert nicht

    Hi Leute ich habe einen IP Changer zu schreiben versucht das mit der Batch und so klappt alles nur möchte ich gerne das angezeigt wird ob die Internetverbindung noch besteht wie mache ich das mit einem Backgroundworker habs ich shcon versucht nur klappt leider nicht!

    Quellcode

    1. Imports System.Net
    2. Imports System.IO
    3. Public Class Form1
    4. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    5. BackgroundWorker1.RunWorkerAsync()
    6. RichTextBox1.Text = "IP-Changer Version 0.1" + Chr(13) + "Made by LuigiMario" + Chr(13) + "Stand: 05.04.2011"
    7. Try
    8. If My.Computer.Network.Ping("www.google.de") = True Then
    9. PictureBox1.Visible = True
    10. End If
    11. Catch ex As Exception
    12. PictureBox2.Visible = True
    13. End Try
    14. Try
    15. Dim webclient As New WebClient
    16. Dim leser As New StreamReader(webclient.OpenRead("Http://www.wieistmeineip.de"))
    17. Dim quelltext As String = leser.ReadToEnd()
    18. Dim ip As String = Split(quelltext, ("<h1 class=" & Chr(34) & "ip" & Chr(34) & ">"))(1).Split(CChar("</h1>"))(0)
    19. TextBox1.Text = (ip)
    20. Catch ex As Exception
    21. PictureBox2.Visible = True
    22. End Try
    23. Button1.Enabled = False
    24. If IO.Directory.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Reconnect") Then
    25. Else
    26. MkDir(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & " \Reconnect")
    27. End If
    28. End Sub
    29. Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged
    30. If ComboBox1.Text = "FRITZ!Box" Then
    31. Button1.Enabled = True
    32. End If
    33. If ComboBox1.Text = "Speedport" Then
    34. Button1.Enabled = True
    35. End If
    36. End Sub
    37. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    38. If ComboBox1.Text = "FRITZ!Box" Then
    39. My.Computer.FileSystem.WriteAllBytes(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Reconnect\FRITZ!Box.exe", My.Resources.Fritzbox, False)
    40. Shell((Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData) & "\Reconnect\FRITZ!Box.exe"))
    41. PictureBox1.Visible = False
    42. Button1.Enabled = False
    43. End If
    44. End Sub
    45. Private Sub PictureBox2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox2.Click
    46. MsgBox("Keine Internetverbindung vorhanden!")
    47. End Sub
    48. Private Sub PictureBox1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
    49. MsgBox("Internetverbindung vorhanden!")
    50. End Sub
    51. Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    52. 'Hier weiß ich nicht weiter mit My.Computer.Network.IsAvailable funzt es net genauso wenig mit My.Computer.Network.Ping... !
    53. End Sub
    54. End Class


    Bitte helft mir !!!
    MFG LuigiMario
    habs ich shcon versucht nur klappt leider nicht!

    achsooo es klappt nicht! verdammt, na denn kann man wohl nichts machen...

    Spoiler anzeigen
    es sei denn du lieferst eine deatilierte fehlerbeschreibung. du bist nicht in der position zu erwarten dass hier jeden deinen code kopiert und versucht das projekt nachzubauen, nur um dir helfen zu können...
    ich will mir nix illegal downloaden ! also der fehler liegt darin das der Backgroundworker nicht funktioniert ! hier ein beispiel

    Quellcode

    1. Private Sub BackgroundWorker1_DoWork(ByVal sender As System.Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
    2. Try
    3. Do While My.Computer.Network.Ping("www.google.de") = True
    4. Timer1.Start()
    5. Loop
    6. Catch ex As Exception
    7. Timer2.Start()
    8. End Try
    9. End Sub
    10. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    11. PictureBox1.Visible = True
    12. PictureBox2.Visible = False
    13. Timer1.Stop()
    14. End Sub
    15. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    16. PictureBox1.Visible = False
    17. PictureBox2.Visible = True
    18. Timer2.Stop()
    19. End Sub
    20. End Class
    und das liegt nicht am an "My.Computer.Network.Ping" sondern daran, dass du versucht auf steuer elemente zuzugreifen, die nicht zum thread des backgroundworkers, sondern zum fenster-thread gehören!

    eine krüpplige lösung wäre im form load event:

    VB.NET-Quellcode

    1. Control.CheckForIllegalCrossThreadCalls = False

    zu schreiben. erheblich besser wäre invoken.. schmeiß mal google an ;)
    IP Changer sind meiner einung nach illegal

    Wayne?
    Deine Meinung zählt bei solchen Dingen nicht.

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. PictureBox1.Visible = True
    3. PictureBox2.Visible = False
    4. Timer1.Stop()
    5. End Sub
    6. Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
    7. PictureBox1.Visible = False
    8. PictureBox2.Visible = True
    9. Timer2.Stop()
    10. End Sub

    Das sind die sinnlosesten Timer, die ich seit langem gesehen habe.
    Für die paar Pictureboxen kannst du auch Delegates und Invokes nehmen, wies geht, steht bei Google. ;)
    FuFu^^ ich habe deine lösung genommen doch nun zeigt er auch nix an also wenn ich auf meinen button "Ip wechseln" verändert sich meine picture box nicht :cursing:
    Was soll ich tun wo liegt der fehler ? ich versuch das schon seit 2 tagen rauszufinden :(

    PS: ich weiß ich bin ein mieser programmierer und fange seit ca 2 wochen an mit vb zu programmieren
    möglichweise werden die picture boxen durch dahin-gepfuschte timer o.ä. ("ähnliches" ist in dem fall code der unerwartet ausgeführt wird) wieder versteckt.

    da gibts nur 2 möglichkeiten: 1. den code sauber neuschreiben oder 2. mit hilfe der suchfunktion alle zeilen suchen in denen die besagte picbox erwähnt wird, mit F9 mit einen breakpoint versehen und das programm debuggen. dann schaust du welche zeilen tatsächlich ausgeführt werden und welche sie verstecken...
    Ich werde das machen danke aber wenn es nicht funktioniert könnte ich dann bitte jemanden mein projekt schicken er soll es nicht korrigieren aber vll findet er einen Fehler wäre sau nett.Ich geb mir wirklich mühe seit 2 tagen sonst hätte ich nicht diese Frage hier gestellt :)