Hallo Community,
ich bin recht frisch in der VB Welt und bin dabei mein erstes größeres Projekt umzusetzen.
Geplant ist eine Anwendung die in einer Drittanwendung Mausklicks und Tastatureingaben ausführt.
Gestartet wird die Drittanwendung über mein Programm mit:
Nach Start soll dann über ein Button (ButtonStart) die "Automatische Steuerung" der Maus und Tastatur gestartet werden.
Da ich die Pausen zwischen den einzelnen Mausbewegungen und Tastatureingaben mit <Threading.Thread.Sleep( )> ausführe (Gibt es hier nicht
iwie eine bessere Möglichkeit?) und nicht will das die komplette Anwendung einfriert, habe ich die entsprechende Methode in einem Thread ausgelagert
Code zum Aufrufen des Threads:
Ein Ausschnitt aus der Methode <FsRuAcRuRepOn>
Wenn ich das Drittprogramm aus meiner Anwendung heraus starte, funktioniert noch alles. Sobald ich dann aber den Button
drücke der den Thread aufruft, positioniert sich die Maus links oben in der Ecke und die Anwendung stürzt ab.
Ist der Fehler aus den Codeausschnitten schon ersichtlich oder wo könnte ich anfangen zu suchen?
Wenn ich die Methode ohne Thread aufrufe, funktioniert sie wunderbar.
Ich hoffe Ihr könnte mir ein bisschen unter die Arme greifen .
Vielen Dank schonmal vorab!
Liebe Grüße
Patrick
ich bin recht frisch in der VB Welt und bin dabei mein erstes größeres Projekt umzusetzen.
Geplant ist eine Anwendung die in einer Drittanwendung Mausklicks und Tastatureingaben ausführt.
Gestartet wird die Drittanwendung über mein Programm mit:
Nach Start soll dann über ein Button (ButtonStart) die "Automatische Steuerung" der Maus und Tastatur gestartet werden.
Da ich die Pausen zwischen den einzelnen Mausbewegungen und Tastatureingaben mit <Threading.Thread.Sleep( )> ausführe (Gibt es hier nicht
iwie eine bessere Möglichkeit?) und nicht will das die komplette Anwendung einfriert, habe ich die entsprechende Methode in einem Thread ausgelagert
Code zum Aufrufen des Threads:
Quellcode
- Public Sub ButtonStart_Click(sender As Object, e As EventArgs) Handles ButtonStart.Click
- 'Ein paar If-Abfragen die entsprechend bei False mit einer MSG-Box gehandhabt werden
- If (RadioButtonClassB.Checked = True) Then
- If (RadioButtonRepOn.Checked = True) Then
- If (RadioButtonA.Checked = True) Then
- 'In der Klasse BsAsFsRun steht die entsprechende Sub mit dem Code zur Steuerung der Maus und Tastatur im Drittprogramm
- Dim run1 As New BsAsFsRun
- 'Starte Thread mit der entsprechenden Methode aus der Klasse BsAsFsRun
- threadForFarming = New System.Threading.Thread(AddressOf run1.FsRuAcRuRepOn)
- threadForFarming.Start()
- ...
Ein Ausschnitt aus der Methode <FsRuAcRuRepOn>
Quellcode
- ...
- Threading.Thread.Sleep(5000)
- Windows.Forms.Cursor.Position = New Point(OberflaecheGUI.xKoordUmrechner(234, OberflaecheGUI.xAuslesenAufloesung), OberflaecheGUI.yKoordUmrechner(519, OberflaecheGUI.yAuslesenAufloesung))
- mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0)
- mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0)
- Threading.Thread.Sleep((OberflaecheGUI.TextBoxTime.Text * 1000))
- SendKeys.Send("k")
- ...
Wenn ich das Drittprogramm aus meiner Anwendung heraus starte, funktioniert noch alles. Sobald ich dann aber den Button
drücke der den Thread aufruft, positioniert sich die Maus links oben in der Ecke und die Anwendung stürzt ab.
Ist der Fehler aus den Codeausschnitten schon ersichtlich oder wo könnte ich anfangen zu suchen?
Wenn ich die Methode ohne Thread aufrufe, funktioniert sie wunderbar.
Ich hoffe Ihr könnte mir ein bisschen unter die Arme greifen .
Vielen Dank schonmal vorab!
Liebe Grüße
Patrick