ControlClick

12/07/2008 15:35 i4mSoH34Vy#16
Außer beim Identen ist es blöd.
12/07/2008 15:38 aLasca#17
Sicher, bei mir funktioniert momentan alles >außer< diese Identfunc, was aber denke ich mal nicht an meinem code liegen sollte sondern an Guildwars, hat denn irgendjemand dieses Problem schonmal gelöst und ist so lieb seinen Code hier mal zu posten? :/
12/18/2008 16:57 aLasca#18
Hi blauwiggle,
Wie soll man denn mit ControlClick eine Identfunc hinbekommen?
Ich hab das dann mit DLLCall über die user32 machen müssen weils mit ControlClick nicht so ging wie ich wollte.

Quote:
ja du kannst aber mit controlclick in guild wars wenig machen(ident funktioniert nicht etc..)
außerdem funktioniert controlclick nicht in einem minimierten fenster
Quote:
Originally Posted by blauwiggle View Post
falsch ;)
12/18/2008 18:06 i4mSoH34Vy#19
Das meinte er damit nicht. Du musst das schon über DLLCall machen.
12/19/2008 12:21 blauwiggle#20
Quote:
Originally Posted by j199207 View Post
Das meinte er damit nicht. Du musst das schon über DLLCall machen.
Mach doch kein Geheimnis draus, habs dir doch auch geschickt *g*
Es ist doch eh nur ein geben und nehmen ... .

Code:
blah
ControlClick($hwnd0, "", "", "left", 2, $ident_x, $ident_y)
Sleep(200)
_MouseClick($hwnd0, "left", $ix, $iy, 1, 80)
blah
Hier noch den Funktionscode:

Code:
Func _MakeLong($LoWord, $HiWord)
	Return BitOR($HiWord * 0x10000, BitAND($LoWord, 0xFFFF))
EndFunc   ;==>_MakeLong

Func _MouseClick($hWnd, $button, $x, $y, $times = 1, $delay = 15) ; Use the relative coords to the client area of the active window
	If $hWnd = 0 Then
		SetError(-1)
		Return
	EndIf
	
	Local $ix
	Local $lParam = _MakeLong($x, $y)
	Local $user32 = DllOpen("user32.dll")
	
	$button = StringLower($button)
	
	If $button = "left" Then
		For $ix = 1 To $times
			DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x200, "int", 0, "long", $lParam) ; Move
			DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x201, "int", 1, "long", $lParam) ; Down
			DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x202, "int", 0, "long", $lParam) ; Up
			
			If $ix < $times Then Sleep($delay)
		Next
	ElseIf $button = "right" Then
		For $ix = 1 To $times
			DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x200, "int", 0, "long", $lParam) ; Move
			DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x204, "int", 2, "long", $lParam) ; Down
			DllCall($user32, "int", "PostMessage", "hwnd", $hWnd, "int", 0x205, "int", 0, "long", $lParam) ; Up
			
			If $ix < $times Then Sleep($delay)
		Next
	Else
		SetError(-2)
		If $user32 <> -1 Then DllClose($user32)
		Return
	EndIf
	If $user32 <> -1 Then DllClose($user32)
EndFunc   ;==>_MouseClick
12/19/2008 13:20 i4mSoH34Vy#21
Wollte bloß nicht das ich ein auf den Deckel von dir bekomm^^
12/19/2008 18:42 aLasca#22
dankeschön :)

€: Verdammt, irgendwie geht das nicht. Ich habe eine settings.au3 erstellt und habe in der Ident.au3 halt include settings.au3

Quote:
#include "Settings.au3"

ControlClick("Guild Wars", "", "", "left", 2, 40, 384)
Sleep(200)
_MouseClick("Guild Wars", "left", 38, 70, 1, 80)
die Settings.au3 ist halt der 2. Quote unverändert
12/20/2008 16:50 Oktawa#23
Hallo,
also das mit dem dllCall war etwas schwer zu verstehen, aber nun hab ichs hingekriegt, es klappt sehr gut danke.
Nun kann ich Mausklicks an ein minimiertes Fenster schicken, aber kann man auch bestimmte Tasten abschicken? Wäre nett wenn ihr ein paar Tipps für mich hättet.
12/22/2008 14:17 anonym110#24
Wenn der Bot identifizieren soll, wird nur das Identifizierungswerkzeug verschoben.

PHP Code:
ControlSend($hwnd,"","","{.}")
    For 
$ii 0 To 3 Step 1
        
For $i 1 To 5 Step 1
            RandomSleep
(600,500)
            
ControlClick($hwnd"""""left"2$IdentX$IdentY)
            
Sleep(200)
            
_MouseClick($hwnd"left"$Inv[$i][0], $Inv[0][$ii], 180)
            
EndSelect
        Next
    Next
ControlSend
($hwnd,"","","{.}"
Was ist da falsch? Vielleicht sind die Sleepzeiten zu kurz, hab aber auch bei längeren Sleepzeiten das gleich Problem :(
12/22/2008 16:40 blauwiggle#25
Quote:
Originally Posted by anonym110 View Post
Wenn der Bot identifizieren soll, wird nur das Identifizierungswerkzeug verschoben.

PHP Code:
ControlSend($hwnd,"","","{.}")
    For 
$ii 0 To 3 Step 1
        
For $i 1 To 5 Step 1
            RandomSleep
(600,500)
            
ControlClick($hwnd"""""left"2$IdentX$IdentY)
            
Sleep(200)
            
_MouseClick($hwnd"left"$Inv[$i][0], $Inv[0][$ii], 180)
            
EndSelect
        Next
    Next
ControlSend
($hwnd,"","","{.}"
Was ist da falsch? Vielleicht sind die Sleepzeiten zu kurz, hab aber auch bei längeren Sleepzeiten das gleich Problem :(

Opt fürs Mausklicken erhöhen.
12/22/2008 17:13 i4mSoH34Vy#26
Der Name von deinen Bots kommt mir irgendwie bekannt vor.
12/22/2008 20:24 Illuminatus#27
Was habt ihr eigenltihc immer alle mit eurem schwarz? xD
12/22/2008 20:32 NBA#28
Schwarz ist schön. Schwarz ist Elegant. Schwarz ist schlicht. Schwarz ist s**y. Schwarz ist cool. Schwarz ist Teuer. Sind das genug Gründe? :D
12/23/2008 12:07 anonym110#29
Den Namen hatte ich schon vor einer langer Zeit damals hab ich ihn aber für was anderes benutzt
12/24/2008 12:45 aLasca#30
Ich habe das selbe Problem, mein Identkit wird auch verschoben, aber es werden auch Gegenstände identifiziert.

€:Frohe Weihnachten^^