|
You last visited: Today at 02:41
Advertisement
Zeitabstand in VB.NET
Discussion on Zeitabstand in VB.NET within the .NET Languages forum part of the Coders Den category.
03/01/2014, 23:16
|
#1
|
elite*gold: 136
Join Date: Jun 2013
Posts: 378
Received Thanks: 83
|
Zeitabstand in VB.NET
Hey Leute, ich fange im Moment an mit dem Programmieren, als Einstieg will ich einen kleinen "Bot" schreiben für das Spiel Flapmmo.com.
Mein aktueller code sieht erst so aus:
PHP Code:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim Id() As Process = Process.GetProcessesByName("firefox")
AppActivate(Id(0).Id)
SendKeys.Send("ENTER")
End Sub
End Class
sprich, er setzt einfach Firefox in den Vordergrund und drückt einmal Enter, springt also einmal, nun will ich aber, dass er weiterhin Enter drückt in von mir geregelten Zeitabständen, ich hab das ganze schon mit sehr vielen Timern versucht, allerdings ist das sehr aufwändig und die Zeit ist irgendwie immer anderst also einfach zu ungenau.
Wie kann ich das besser machen?
|
|
|
03/01/2014, 23:36
|
#2
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
|
|
|
03/01/2014, 23:45
|
#3
|
elite*gold: 136
Join Date: Jun 2013
Posts: 378
Received Thanks: 83
|
Danke, aber dabei hab ich irgendwie das Problem, dass das nur einmal geht, sprich er führt Sendkeys aus, pausiert, und macht dann nichtsmehr.
PHP Code:
Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click Dim Id() As Process = Process.GetProcessesByName("firefox") AppActivate(Id(0).Id) SendKeys.Send("ENTER") Threading.Thread.Sleep(1000) SendKeys.Send("ENTER") Threading.Thread.Sleep(1000) SendKeys.Send("ENTER") End Sub End Class
|
|
|
03/02/2014, 00:03
|
#4
|
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
|
Stichwort: Schleife
|
|
|
03/02/2014, 11:13
|
#5
|
elite*gold: 136
Join Date: Jun 2013
Posts: 378
Received Thanks: 83
|
Tut mir leid ich komme mit diesen vielen Schleifen nicht klar. Könnte mir mal einer ein Beispiel machen ?  Die Zeitabstände sollen übrigens verschieden sein können.
|
|
|
03/02/2014, 14:00
|
#6
|
elite*gold: 666
Join Date: Apr 2011
Posts: 5,810
Received Thanks: 2,418
|
|
|
|
03/02/2014, 21:40
|
#7
|
elite*gold: 136
Join Date: Jun 2013
Posts: 378
Received Thanks: 83
|
Ich verstehe das jetzt einigermaßen, aber kapiere immernoch nicht wie ich das machen soll, dass er immer für eine andere Zeit pausiert, könnte mir das jemand in einem Beispielcode erklären ?
|
|
|
03/02/2014, 22:20
|
#8
|
elite*gold: 113
Join Date: Dec 2009
Posts: 16,685
Received Thanks: 4,450
|
PHP Code:
Public Class Form1
Private Sub SendToGame(ByVal s As String, ByVal d As Integer)
Dim Id() As Process = Process.GetProcessesByName("firefox")
AppActivate(Id(0).Id)
SendKeys.Send(s)
Threading.Thread.Sleep(d)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
SendToGame("Enter", 1250)
End Sub
End Class
Etwas so grob in dem Stil dürfte für dich von Nutzen sein, somit wird dein Code auch nicht unnötig lange, wenn du viele verschiedene Sachen in unterschiedlichen Abständen machen willst.
|
|
|
03/03/2014, 10:13
|
#9
|
elite*gold: 136
Join Date: Jun 2013
Posts: 378
Received Thanks: 83
|
Danke aber durch diesen Sleep befehl stopt einfach der Browser komplett in der Zeit.
|
|
|
03/03/2014, 11:59
|
#10
|
elite*gold: 1000
Join Date: Apr 2012
Posts: 1,003
Received Thanks: 208
|
Stichwort: Multithreading
|
|
|
03/06/2014, 11:09
|
#11
|
elite*gold: 2049
Join Date: May 2012
Posts: 4,593
Received Thanks: 441
|
Quote:
Originally Posted by qkuh
Stichwort: Multithreading
|
Richtig.
Starte deine Sub einfach in einem neuen Thread:
Code:
With New Thread(Sub() deinesub())
.IsBackground = True
.Start()
End With
In deinem Falle also so:
Code:
Public Class Form1
Private Sub SendToGame(ByVal s As String, ByVal d As Integer, ByVal anzahl as Integer)
For i as Integer = 1 to anzahl
Dim Id() As Process = Process.GetProcessesByName("firefox")
AppActivate(Id(0).Id)
SendKeys.Send(s)
Threading.Thread.Sleep(d)
Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
With New Thread(Sub() SendToGame("Enter", 1250, 10))
.IsBackground = True
.Start()
End With
End Sub
End Class
|
|
|
03/09/2014, 12:39
|
#12
|
elite*gold: 155
Join Date: Jul 2012
Posts: 24,491
Received Thanks: 2,568
|
Hallo UnReal,
ich habe auch schon einige Probleme damit gehabt.
Entweder du Definierst einen neuen Thread und löst das ganze über Threading.Thread.sleep() oder du machst es so:
Code:
Sub sleep(ByVal sleeptime As Integer)
Dim stoppw As New Stopwatch
stoppw.Start()
Do Until stoppw.ElapsedMilliseconds >= sleeptime
Application.DoEvents()
Loop
stoppw.Stop()
stoppw.Reset()
End Sub
Lg,
xCyancali
|
|
|
03/09/2014, 12:47
|
#13
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
^ So macht man es nicht...
Nutz niemals Application.DoEvents()
|
|
|
03/09/2014, 13:16
|
#14
|
elite*gold: 2932
Join Date: Oct 2009
Posts: 6,966
Received Thanks: 1,097
|
^ zu generell, wenn man weiß was man tut gibts auch legit bereiche wo mans verwenden kann. weiteres wie immer im msdn:
btt: threading ist hier angegebracht und sollte auch genutzt werden
|
|
|
03/09/2014, 17:04
|
#15
|
elite*gold: 1
Join Date: Jun 2012
Posts: 5,819
Received Thanks: 3,200
|
Await:Async wäre trotzdem eine bessere alternative
|
|
|
Similar Threads
|
Spammer mit Zeitabstand
04/09/2011 - Main - 4 Replies
Hallo,ich suche einen Spammer der nach Zeitabstand Sätze schreibt.
z.B Alle 3 Sekunden soll er Hallo schreiben.
Habt ihr ein Programm dafür? Danke im vorraus!
|
All times are GMT +1. The time now is 02:42.
|
|