VB Hotmail Webbot

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Rinecamo.

    VB Hotmail Webbot

    hallo liebe vb paradise gemeinde,

    habe mal einen webbot programmiert, der sich automtisch in hotmail einloggt und mir die anzahl der ungeleseen emails anzeigt.
    Funktioniert auch alles ganz gut nur liegt die cpu auslastung beim abfragen bei 40 - 50%

    Habe schon gelesen das es an meiner Pause Funktion liegen könnte doch kann ich auf diese nicht so leicht verzichten, weil er ja schließlich die verbindung erstmal aufbauen muss.
    hat jemand vielleicht eine Lösungsansatz oder eine Idee woran es liegt.
    Hier erstmal den Code


    VB.NET-Quellcode

    1. Public Class Form1
    2. Public Sub Pause(ByVal Milliseconds As Integer)
    3. Dim dTimer As Date
    4. dTimer = Now.AddMilliseconds(Milliseconds)
    5. Do While dTimer > Now
    6. Application.DoEvents()
    7. Loop
    8. End Sub
    9. Private Sub Form1_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
    10. e.Cancel = True
    11. Me.Hide()
    12. Me.ShowInTaskbar = False
    13. End Sub
    14. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    15. Me.Hide()
    16. Me.Visible = False
    17. Me.ShowInTaskbar = False
    18. Me.Opacity = 0
    19. Timer1.Interval = 30000 ' zum testen erstmal auf 30 sec
    20. Timer1.Start()
    21. Try
    22. WebBrowser1.Navigate("http://www.hotmail.de")
    23. Application.DoEvents()
    24. Do While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    25. Application.DoEvents()
    26. Loop
    27. WebBrowser1.Refresh()
    28. Pause(2500)
    29. WebBrowser1.Document.GetElementById("i0116").InnerText = "email"
    30. WebBrowser1.Document.GetElementById("i0118").InnerText = "passw"
    31. WebBrowser1.Document.GetElementById("SI").InvokeMember("click")
    32. Dim emails
    33. Pause(2500)
    34. emails = WebBrowser1.Document.GetElementById("h_newMsgs").OuterText
    35. MsgBox(emails)
    36. Catch ex As Exception
    37. MsgBox("Es ist ein Fehler aufgetreten, das Programm wird beendet.", vbCritical)
    38. Me.Close()
    39. End Try
    40. End Sub
    41. Private Sub FormAnzeigenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles FormAnzeigenToolStripMenuItem.Click
    42. Me.Show()
    43. Me.Opacity = 1
    44. Me.ShowInTaskbar = True
    45. End Sub
    46. Private Sub ProgrammBeendenToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ProgrammBeendenToolStripMenuItem.Click
    47. NotifyIcon1.Dispose()
    48. End
    49. End Sub
    50. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    51. Try
    52. WebBrowser1.Refresh()
    53. Pause(5000)
    54. Dim emails
    55. emails = WebBrowser1.Document.GetElementById("h_newMsgs").OuterText
    56. MsgBox(emails)
    57. Catch ex As Exception
    58. MsgBox("Es ist ein Fehler aufgetreten, das Programm wird beendet.", vbCritical)
    59. Me.Close()
    60. End Try
    61. End Sub
    62. End Class


    P.S. Habe einen Teil des Codes von Sempervideo.de und ihn in sofern erweitert das es nun automatisiert abläuft.
    Wer möchte kann das Programm ja noch nach seinen Vorstellungen anpassen und selbst nutzen ^^
    Mach den LogIn doch per WebRequest.
    Danke werde das mal ausprobieren somit wäre dann die Anmeldung vielleicht schon mal schneller.

    Jedoch ändert das glaube ich nicht viel an der Auslastung...

    VB.NET-Quellcode

    1. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    2. Try
    3. WebBrowser1.Refresh()
    4. Pause(5000)
    5. Dim emails
    6. emails = WebBrowser1.Document.GetElementById("h_newMsgs").OuterText
    7. MsgBox(emails)
    8. Catch ex As Exception
    9. MsgBox("Es ist ein Fehler aufgetreten, das Programm wird beendet.", vbCritical)
    10. Me.Close()
    11. End Try
    12. End Sub


    In diesem Programmabschnitt wird ja nur die Seite Aktualisiert und ein Link ausgelesen und da liegt die CPU Auslastung auch bei 40 - 50% ?(

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „sea-louce“ ()

    Ein Webrequest fordert ein URL an soweit ich das gelesen habe.

    Habe versucht mich etwas in Webrequests einzulesen jedoch mit mäßigen Erfolg.
    Anscheinend ist es ein ganz anderes prinzip zu meinem Modell mit dem Webbrowser.

    Mal ein paar Fagen dazu...

    Was ist der Unterschied von Webrequest und meiner Methode?
    Was sind die Vorteile von Webrequest im gegensatz zu meiner Methode?
    Ist es mit Webrequest weiterhin möglich die seite in meinem VB Webbrowser anzeigen zu lassen?
    Könnte ich mit Webrequest meine Pause / Sleep Funktion umgehen?
    1. Der WebRequest läuft sozusagen mehr im Hintergrund ab, also beim WebBrowser sieht man halt das er was lädt.
    2. Es geht schneller.
    3. Ist doch total unnötig, vor allem weil du die Form sowieso beim laden verschwinden lässt.
    4. Ja.