Hallo,
ich wollte mir in Visual Basic einen einfachen Spammer machen. Das Programm schreibt eine Text, den der Benutzer vorher in eine TextBox eingegeben hat, immer wieder in ein ausgewähltes Textfeld rein und drückt anschließend ENTER. Damit sich die Benutzeroberfläche
nicht aufhängt, habe ich das ganze in eine Thread gepackt. Doch jetzt funktioniert es nicht mehr! Bitte helft mir!
Hier der Fehlercode:
----------------------------------------------------------------
Ein Ausnahmefehler des Typs "System.InvalidOperationException" ist in System.Windows.Forms.dll aufgetreten.
Zusätzliche Informationen: SendKeys kann nicht innerhalb der Anwendung ausgeführt werden, da diese Anwendung keine Windows-Meldungen verarbeitet. Ändern Sie die Anwendung so, dass sie Meldungen behandelt, oder verwenden Sie die SendKeys.SendWait-Methode.
----------------------------------------------------------------
Hier mein Programm:
Public Class Form1
'Kurz zu den Namen: Button1 ist der Startbutton, Button2 der Stobbutton, TextBox1 die Eingabemöglichkeit und Label1 gibt den Status des Programms an
'bo ist dafür wichtig, ob der Thread aufhören soll, zu arbeiten.
Public bo As Boolean = True
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'Überprüfen, ob auch text da ist.
If TextBox1.Text <> "" Then
'Thread definieren und starten
Dim str = New System.Threading.Thread(AddressOf spammen)
str.Start()
Else
MessageBox.Show("Es ist kein Text vorhanden", "Warnung", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
End If
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'zum Stoppen vom Thread str
bo = False
Label1.Text = "Ready"
Label1.Refresh()
Button1.Enabled = True
Button2.Enabled = False
End Sub
Sub spammen()
'das ist der thread
Button1.Enabled = False
Button2.Enabled = True
System.Threading.Thread.Sleep(5000)
Label1.Text = "Spamming"
Label1.Refresh()
Do While bo = True
espammen()
Label1.Text = DateTime.Now.ToLongTimeString.ToString
Label1.Refresh()
Loop
Label1.Text = "Ready"
Exit Sub
End Sub
Sub espammen()
'die Methode zum Spammen, jetzt nur kommentiert da das Programm sonst abstürzt!
My.Computer.Keyboard.SendKeys(TextBox1.Text)
My.Computer.Keyboard.SendKeys("{ENTER}")
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'Damit die Threads laufen:
Control.CheckForIllegalCrossThreadCalls = False
Button2.Enabled = False
End Sub
End Class