Что нового

работа мыши в свернутом окне

brundx

Новичок
Сообщения
4
Репутация
0
заранее извените, если не там создал тему.

сам вопрос: есть онлайн игра с клиентом, я делаю под нее бота. все хорошо получалось, пока не встал вопрос: а как работать за компьютером, если при сворачивании приложения, в котором работает бот, все операции обрываются. сам бот должен нажимать по клавише ESC и левой кнопкой мыши по заданным координатам. с клавишей ESC я разобрался, ее можно нажать, когда приложение свернуто, при помощи ControlSend. а вот с нажатием левой кнопкой мыши по определенной координате запутался. посмотрел функцию ControlClick, она к сожелению не работает со свернутым окном. так как я не специалист, а новичек, попробывал ControlSend + {LWIN} + задать координаты, но тоже не получилось...
 
Автор
B

brundx

Новичок
Сообщения
4
Репутация
0
тогда подскажите пожалуйста, как при помощи функции ControlClick нажать на точку (кнопку) в игре, с координатами 680, 51? эта кнопка графическая, кроме мышки за нее никакая клавиша не отвечает. вот с функцией MouseClick все ясно, там к примеру пишешь MouseClick("primary", 680, 51), а с этой несовсем...
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
Код:
Func _click($coor)
    $aSplit = StringRegExp($coor,"(\d+), (\d+)",1)
   _left($aSplit[0],$aSplit[1])
EndFunc

Func _left($X, $Y, $CC = 1)
		ControlClick($TITL, "", $KLASS, "left", $CC, $X , $Y )
EndFunc
 
Автор
B

brundx

Новичок
Сообщения
4
Репутация
0
я так понимаю, в переменной $klass должно быть что-то связанное с GUI? вот на примере с нажатием на ESC:

ControlSend ("[TITLE:blum:rogramma]", "", "", "{ESC}")

как для себя я думаю - первый элемент это название окна программы, где надо нажать на ESC, второй и третий вообще не нужен (там текст какой-то и controlID, без этого работает), ну и четвертый название клавиши. получается, без GUI можно жать на кнопки в свернутом приложении, но нельзя перемещать и кликать мышкой?
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
1445446.png
 

rusreg79

Продвинутый
Сообщения
159
Репутация
57
В игре ControlClick не будет работать в свернутом окне.
 
Автор
B

brundx

Новичок
Сообщения
4
Репутация
0
class не отображается в игре. в любом месте отображается, но именно в игре нет((
rusreg79, похоже, что это горькая правда((
 

mrdig

Новичок
Сообщения
7
Репутация
1
у меня прекрасно работатет ControlClick не только в свернутом окне но и в свернутом окне другого пользователя :IL_AutoIt_1:

у вас скорее всего синтакс. ошибки

class можно не вводить если 1 клиент достаточно title

пример так

ControlClick('Название приложение', '',1511) 1511- ID кнопки



Добавлено:
Сообщение автоматически объединено:



Добавлено:
Сообщение автоматически объединено:

Код:
Func _left($x, $y, $ran=0, $cc=1)
;~      Sleep(Random(100, 500))
        $x = $x - $ran/2 + Random($ran)
        $y = $y - $ran/2 + Random($ran)
        ControlClick($titl, "", $klass, "left" , $cc, $x, $y)
EndFunc

;или

Func _click($coor)
    $aSplit = StringRegExp($coor,"(\d+), (\d+)",1)
    ControlClick( $titl, "", $klass, "left" , 1, $aSplit[0],$aSplit[1])
EndFunc

сорри я нюб, а куда всетаки в 1-м или 2-м примере воодить координаты кнопки клиента?

координаты вот X=903 Y=367
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
mrdig
Немного исправил функции.

сорри я нюб, а куда всетаки в 1-м или 2-м примере воодить координаты кнопки клиента?
координаты вот X=903 Y=367


Код:
_left(903, 367)
$coord = "903, 367"
_click($coord) ;или _click("903, 367")
 

mrdig

Новичок
Сообщения
7
Репутация
1
блин не работает нефига :-\

короче вот кнопка на скрине у которой не определяет ID.



вот инфа что выдает по кнопке :

Код:
>>>> Window <<<<
Title:	Necromancer
Class:	Afx:400000:0:10011:0:0
Position:	274, -5
Size:	1024, 788
Style:	0x94020000
ExStyle:	0x00000000
Handle:	0x000D0264

>>>> Control <<<<
Class:	#32770
Instance:	2
ClassnameNN:	#327702
Name:	
Advanced (Class):	[CLASS:#32770; INSTANCE:2]
ID:	
Text:	
Position:	680, 200
Size:	400, 640
ControlClick Coords:	249, 168
Style:	0x50000044
ExStyle:	0x00000000
Handle:	0x00FC0E34

>>>> Mouse <<<<
Position:	1203, 363
Cursor ID:	0
Color:	0x3F6A81

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

скрипт должен быть такой?


Код:
_left(249, 168)
$coord = "249, 168"
_click($coord


Func _click($coor)
    $aSplit = StringRegExp($coor,"(\d+), (\d+)",1)
   _left($aSplit[0],$aSplit[1])
EndFunc

Func _left($X, $Y, $CC = 1)
        ControlClick(Necromancer, "left", $CC, $X , $Y )
EndFunc
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
mrdig
Совершенно не правильно!

ControlClick(Necromancer, - это что?Зачем это надо изменять, это функция!

_left(249, 168)
$coord = "249, 168"
_click($coord)
Это два раза не надо


Код:
global $TITL = WinWait("Necromancer", "", 3)
global $KlASS = "[CLASS:#32770; INSTANCE:2]"

Func _click($coor)
    $aSplit = StringRegExp($coor,"(\d+), (\d+)",1)
   _left($aSplit[0],$aSplit[1])
EndFunc

Func _left($X, $Y, $CC = 1)
        ControlClick($TITL, "", $KLASS, "left", $CC, $X , $Y )
EndFunc
	
	while 1
		_left(249, 168)
		sleep(1000)
	wend
 

mrdig

Новичок
Сообщения
7
Репутация
1
edward_freedom спасибо! это совсем другое дело)

завтра буду доразбирать почему все таки некоторые кнопки не жмет , уже голова не варит совсем

*** вопросы :

1) А можно както вызвать нажатие определенной кнопки , если для ее активации требуеться предварительно нажатие 2-х или 3-х кнопок, не вызывая эти предварительные кнопки? одной командой...?

2) Если вопрос 1 не осуществим, то что делать со скриптом если у меня 10 разных кнопок без ID?
 
Верх