AutoIT Send key´s to minimierten Window

02/09/2016 11:35 Supermgking#1
Hallo liebe epvp com
Brauche dringend hilfe will ein BoT mache wie jeder andere
aber was ich will :
Wenn ich starte soll er z.B 4,y,{SPACE},q,e
an das fenster senden obwohl das fenster nicht sichtbar oder minimiert
ist habe es mit dem Code :
Brauche hilfe dringend bin auch über Skype erreichbar : supermgking
02/09/2016 11:41 alpines#2
Du kannst keine Tasten an minimierte Fenster senden da diese nicht gerendert werden. Du könntest aber versuchen sie außerhalb des Bildbereiches zu schieben und dann etwas dorthin zu senden.
02/09/2016 11:45 Supermgking#3
schade trotzdem danke für deine schnelle hilfe
kannst du mir sagen warum bei mir nicht pause und ende funktioniert?


02/09/2016 11:54 alpines#4
Aus dem Grund weil du keine Funktionen definiert hast die Pause und Ende heißen.
02/09/2016 11:58 Supermgking#5
Also muss ich Func Pause
Func Ende so schreiben?
02/09/2016 12:02 Devsome#6
Bei dir würde es Funktionieren wenn du p oder x gedrückt halten würdest, sofern die Funktionen existieren würden :3
Ich würde dir eher zu [Only registered and activated users can see links. Click Here To Register...] raten.

Habe auf dem Mac kein AutoIt drauf, daher kann ich das leider nicht testen.
Sollte so oder so ähnlich klappen
Code:
#RequireAdmin

HotKeySet("p", "Pause")
HotKeySet("x", "Ende")
$pause = false;
AdlibRegister("start", 25) ; Jede 25ms wird die Funktion ausgeführt


While 1
	sleep(250); wartet 250ms
WEnd

Func Pause()
	If $pause = False Then ; Schaut ob die Funktion gestartet ist oder nicht
		AdlibUnRegister("start") ; Funktion start wird hier pausiert
	Else
		AdlibRegister("start", 25) ; Jede 25ms wird die Funktion ausgeführt
	EndIf
EndFunc

Func Ende()
	AdlibUnRegister("start") ; siehe oben
	Exit 0 ; Beendet dein Programm
EndFunc

Func start()
	send ("q")
	sleep ("1")
	send ("{space}")
	sleep ("1")
	send ("q")
	sleep ("1")
	send ("y^")
	sleep (1)
	sleep (1)
	send ("q")
	sleep ("1")
	send ("{space}")
	sleep ("1")
	send ("q")
	sleep ("1")
	send ("4")
	sleep (1)
	send ("q")
	sleep ("1")
	send ("{space}")
	sleep ("1")
	send ("q")
	sleep ("1")

EndFunc
02/11/2016 09:01 Moope#7
Quote:
Originally Posted by Supermgking View Post
Also muss ich Func Pause
Func Ende so schreiben?
wenn ich dir was vorschlagen darf:

mit visual basic (2010 und neuer) kannst du ganz einfach mit SendMessage Key´s an ein minimiertes Fenster schicken! :)
C++ geht natürlich auch.. autoit weis ich ned ob SendMessage unterstützt

vb.net:
Code:
Imports System.Runtime.InteropServices
Code:
  <Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
    End Function
Code:
 Dim p As Process = Process.GetProcessesByName("deinegameexe")(0) 'ohne .exe


SendMessage(p.MainWindowHandle, &H102, Asc("W"c), 0)
SendMessage(p.MainWindowHandle, &H102, Asc("A"c), 0)
SendMessage(p.MainWindowHandle, &H102, Asc("S"c), 0)
SendMessage(p.MainWindowHandle, &H102, Asc("D"c), 0)
02/11/2016 13:23 alpines#8
SendMessage gibts in AutoIt auch. Ich denke aber nicht das die Befehle vom Fenster entgegengenommen werden.
02/11/2016 13:34 warfley#9
Quote:
Originally Posted by BYTHEW4Y View Post
wenn ich dir was vorschlagen darf:

mit visual basic (2010 und neuer) kannst du ganz einfach mit SendMessage Key´s an ein minimiertes Fenster schicken! :)
C++ geht natürlich auch.. autoit weis ich ned ob SendMessage unterstützt

vb.net:
Code:
Imports System.Runtime.InteropServices
Code:
  <Runtime.InteropServices.DllImport("user32.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Private Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As IntPtr
    End Function
Code:
 Dim p As Process = Process.GetProcessesByName("deinegameexe")(0) 'ohne .exe


SendMessage(p.MainWindowHandle, &H102, Asc("W"c), 0)
SendMessage(p.MainWindowHandle, &H102, Asc("A"c), 0)
SendMessage(p.MainWindowHandle, &H102, Asc("S"c), 0)
SendMessage(p.MainWindowHandle, &H102, Asc("D"c), 0)
Spiele arbeiten oftmals nicht mit der Windows Message Queue um Tastatureingaben zu verarbeiten, sondern nutzen meist z.B. DirectX, SDL, glut oder ähnliche Frameworks, welche direkt den Tastatur Puffer auslesen, da wird man mit SendMessage nicht weit kommen
02/11/2016 13:46 alpines#10
Quote:
Originally Posted by warfley View Post
Spiele arbeiten oftmals nicht mit der Windows Message Queue um Tastatureingaben zu verarbeiten, sondern nutzen meist z.B. DirectX, SDL, glut oder ähnliche Frameworks, welche direkt den Tastatur Puffer auslesen, da wird man mit SendMessage nicht weit kommen
Das hängt aber vom Spiel ab.
02/11/2016 13:54 warfley#11
Quote:
Originally Posted by alpines View Post
Das hängt aber vom Spiel ab.
Darum steht da oftmals ;)
02/11/2016 14:02 alpines#12
Quote:
Originally Posted by warfley View Post
Darum steht da oftmals ;)
Wollts nur nochmal gesagt haben ;)
02/12/2016 20:08 Moope#13
SendInput sollte aber dann zu 80% funktionieren.. tut es zumindest bei mir :D
02/15/2016 13:24 MaxChri#14
@TE, controlsend funktioniert auf den neuen metin2 binarys nicht mehr.