using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; namespace test { public partial class Form1 : Form { public Form1() { InitializeComponent(); } [DllImport("User32.dll", SetLastError = true)] public static extern int SetForegroundWindow(IntPtr hwnd); int ID; public void ProzessErstellen(string Programmname) { Process P = new Process(); P.StartInfo.FileName = Programmname; P.Start(); ID = P.Id; Application.DoEvents(); } public void TextSenden(string Text) { System.IntPtr MainHandle = Process.GetProcessById(ID).MainWindowHandle; SendKeys.SendWait("{TAB}"); SetForegroundWindow(MainHandle); Application.DoEvents(); } private void button1_Click(object sender, EventArgs e) { ProzessErstellen("alefclient.exe"); Application.DoEvents(); } public void button2_Click(object sender, EventArgs e) { System.Threading.Thread.Sleep(2000); for (int i = 0; i <= 20;i++) { TextSenden(Text); System.Threading.Thread.Sleep(1000); Application.DoEvents(); } } } } So jetzt zu meinen Problem. Ich will ihr nen Rollenspiel AFK Bot erstellen. Aber egal welche Taste ich bei SendKeys rein schreib, im Spiel wird immer der ESC befehl ausgeführt. Mit Button 1 öffne ich mein spiel und Prozess. Und mit Button2 starte ich meine Tasteneingabe was so weit ja funzt, bis auf das, dass immer der ESC Befehl ausgeführt wird.(ALso wie wenn ich im spiel ESC drücke dann geh das Menüfenster auf, das passiert bei allen Tasten was ich bei sendkeys rein schreib.) Kann mir da jemand helfen? MfG
Eigentlich sollte das funktionieren... Das einzige Auffällige ist folgendes
1 | public void TextSenden(string Text) { |
2 | System.IntPtr MainHandle = Process.GetProcessById(ID).MainWindowHandle; |
3 | SendKeys.SendWait("{TAB}"); |
4 | SetForegroundWindow(MainHandle); |
5 | Application.DoEvents(); |
6 | }
|
Beim ersten Aufruf von TextSenden ist das Zielfenster noch nicht im Vordergrund und Application.DoEvents sollte nicht verwendet werden. U.U. noch die anderen Einstellungen der SendKeys-Klasse in der app.config ausprobieren http://msdn.microsoft.com/de-de/library/system.windows.forms.sendkeys.sendwait.aspx
Es funktioniert ja alles soweit. Bloß wenn mein Programm eine Taste sendet, dann passirt inGame immer das gleiche. Es geht immer das Menü auf egal welche Taste ich senden lasse: F3,f,h,u,t,f,tab,strg,alt,usw... . Es ist wie wenn ich im Spiel die ESC Taste drücke dann geht auch das Menü auf. Der Code sieht mittlerweile soaus: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Diagnostics; using System.Runtime.InteropServices; namespace Arch_Bot { public partial class Form1 : Form { public Form1() { InitializeComponent(); } [DllImport("kernel32.dll", SetLastError = true)] public static extern int SetForegroundWindow(IntPtr hwnd); int ID; public void ProzessErstellen(string Programmname) { Process P = new Process(); P.StartInfo.FileName = Programmname; P.Start(); ID = P.Id; } public void TextSenden(string Text) { System.IntPtr MainHandle = Process.GetProcessById(ID).MainWindowHandle; SendKeys.SendWait(Text); //SetForegroundWindow(MainHandle); } private void button1_Click(object sender, EventArgs e) { ProzessErstellen("alefclient.exe"); } public void button2_Click(object sender, EventArgs e) { Timer timer = new Timer(); timer.Interval = 5000; timer.Tick += new EventHandler(timer_Tick); timer.Start(); } public void timer_Tick(object sender, EventArgs e) { for (int i = 0; i <= 5;i++) { System.Threading.Thread.Sleep(1000); TextSenden("{g}"); } } private void button3_Click(object sender, EventArgs e) { } } } Habe noch paar Tipps gekriegt aber da komm ich gar nicht weiter. Tipp von jemanden; dein fhler dürfte sein das du ans spiel sendest, wichtig bei bots ist zu unterscheiden, bots oda cheat enginens, cheat engines senden ihre befehle ans spiel, bots sollten nur auf dem pc agieren, heißt man erstellt mit einem bot eine selbstagierende maus + tastatur, also sollte der bot zugriff auf die tastenkombinationen direkt nehmen, dann gibt es noch die intelligenten bots die aktionen ingame erkennen dafür solltest du einen socket string aufsetzen der die pakete liest und auf die pakete entsprechend reagiert Hoffe ihr könnt mir helfen. MFG
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.