Frage von B9658, 45

Visual Basic Button1 und Button2 soll bestimmte Tasten drücken?

Hallo, Ich würde gern wissen wie ich Button1 dazu bringe das er erst die Taste W und dann S für 0,25 Sekunden drückt (Das Selbe für Button2 mit den Tasten Leerzeichen (Space) und X. Und wie ich den Intervall, also die Pause zwischen dem dem erneut drücken von den beiden Tasten von Button 1 und 2 per Zufall bestimmen lassen kann, jedoch nicht länger als 5 minuten eine Warte Zeit dazwischen ist :)

Sorry, aber ich bin aktuell richtiger neuanfänger und wäre froh, wenn jemand ggf. den fertigen Code hat. Da ich mit dem auswerten von Bildern als Anleitung probleme habe und mir dafür die Kentnisse fehlen.

Antwort
von Thor1889, 19

Fertigen Code gibt's von mir eigentlich nicht, denn wenn du Programmieren möchtest setze ich ein wenig Eigenrecherche vorraus ;)


SendKeys.Send("W")

System.Threading.Thread.Sleep(Zeit in ms)

dann ein Timer nutzen, denn das ist nur eine Wartezeit, damit der ablauf nicht zu schnell ist.

Also: Timer erstellen und auf 250 ms festlegen. Mit dem Button_Click den Timer aufrufen und sagen, dass er dementsprechend

SendKeys.Send("S")

für 250 ms ausführen soll

Die Sache ist aber die, dass das Programm das nur im vordergrundigen Fenster macht. Ich weiß ja nicht was du damit bezwecken willst.

Ansonsten ist msdn die richtige Anlaufstelle

https://msdn.microsoft.com/de-de/library/system.windows.forms.sendkeys.send(v=vs.110).aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1

Kommentar von B9658 ,

So war es auch gedacht. Da sorogramm soll auch nicht im gerade aktiven Fenster agieren.

Kommentar von B9658 ,

Brauche ich dafür aus der toolbox den timer?

Kommentar von Thor1889 ,

Kommentar 1)

Willst du, dass an externe Prozesse die Befehele (Tasten) gesendet werden ? Sorry ich verstehe das nicht so recht, klingt für mich etwas doppelt negiert :D

Ja am einfachsten ist's mit dem Timer aus der Toolbox

Kommentar von B9658 ,

Im Grunde genommen ja, dabei ist es aber egal welches Programm. Solange er die tasten halt so ausgibt wie geplant. Er soll einfach das AFK gehen in einem spiel verhindern. Ob das jetzt in Spiel XY ist wenn es Aktiv ist, oder ein Wordpad spielt keine Rolle, daher ist die Frage, wohin er es ausgeben soll, also in welchen Prozess egal :)

Kommentar von B9658 ,

Das mit dem SendKey.Send ("{W}") hatte ich schon versucht, jedoch gibt er keine Tasten aus.

Kommentar von Thor1889 ,

Doch gibt er, und zwar unverzüglich, deswegen .sleep()

Die Taste wird aber eben in den vordergrundigen Prozess bzw ein ausgewähltes (.NET) Steuerelement, wie eine Textbox/Suchmaske geschickt.

Antwort
von triopasi, 30

Also, ich kann kein VB, kann dir aber n Tipp geben nach was du suchen solltest.

1. Wie generierst du die Tastendrücke? Kann man da evtl. sogar ne Zeit angeben? Ansonsten: Kannst du die Taste seperat "drücken" und "loslassen"?


2. Es gibt in jeder Programmiersprache iwelche sleep-Befehle, auch wenn die evtl. anderst heißen. Damit kannst du das Programm eine bestimmte Zeit "warten" lassen.

3. Zufallszahlen kann man auch googlen..


hier noch ein Link: http://www.vbforums.com/showthread.php?570766-RESOLVED-holding-a-key-down-in-vb-...

Kommentar von B9658 ,

Leider überhaupt nicht das was ich gesucht habe.

Kommentar von triopasi ,

Du sagst, du willst ne Taste x ms lang gedrückt halten, genau das machen die da... was willst du denn dann?

Keine passende Antwort gefunden?

Fragen Sie die Community