Что нового

Бот в неактивном окне

Sinel

Новичок
Сообщения
28
Репутация
1
Всем привет меня интересует такой вопрос возможно ли как то сделать чтобы бот работал в неактивном окне? (окно браузера)

сам скрипт

Код:
WinWaitActive('Войны Империй - Mozilla Firefox')
HotKeySet("{PAUSE}","Escape")
	While 1
    MouseClick("left", 778, 884, 1, 5)
	Sleep(100)
	MouseClick("left", 626, 726, 1, 5)
	Sleep(100)
	MouseClick("left", 834, 588, 1, 5)
   	Sleep(100)
	MouseClick("left", 789,695, 1, 5)
	Sleep(100)
	MouseClick("left", 773, 692, 1, 5)
		Do 
    Sleep(100)
    PixelSearch (829, 595, 849, 602, 0x1C1004)
Until Not @error
MouseClick("left", 933, 742, 1, 5)
		Do 
    Sleep(1000)
    PixelSearch (1335, 711, 1345, 731, 0x00CCFF)
	Until Not @error
MouseClick("left", 1460, 797, 1, 5)
Sleep(1000)
    WEnd
	Func Escape()
Exit
EndFunc


Зы ну и еще попутно пару вопросов касающиеся этой темы

1)Как сделать чтобы цвет пикселя искался не только определенный но и была функция "или" то есть или цвет .... или цвет ...
если да то подскажите команду

2)Возможно ли как то сделать чтобы поиск был по определенной картинке? а не по пикселю
если да то как

Заранее спасибо за помощь
 

edward_freedom

Осваивающий
Сообщения
200
Репутация
44
как то сделать чтобы бот работал в неактивном окне?
http://autoit-script.ru/index.php?topic=4462.0
функция "или"
Код:
Else

как то сделать чтобы поиск был по определенной картинке?
Код:
ImageSearch

:smile:
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
edward_freedom сказал(а):
как то сделать чтобы бот работал в неактивном окне?
http://autoit-script.ru/index.php?topic=4462.0
функция "или"
Код:
Else

как то сделать чтобы поиск был по определенной картинке?
Код:
ImageSearch

:smile:
а как мне это приделать к скрипту ? да и про картинку не понятно
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
http://autoit-script.ru/index.php?topic=175.0
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
Belfigor сказал(а):
http://autoit-script.ru/index.php?topic=175.0
Читал но не понял сложновато для меня не тот еще уровень )
а просто на примере доступно объяснить можете ?
если да то интересует
1)поиск картинки и клик на карду определенную
2)поиск картинок с функцией "или" если не понятно типо не нашел картинку то может быть найдет другую ... ну и тд
3)я нашел урок на немецком как юзать эту функцию но я просто не догоняю зачем там нужны всякие $x $y просто не знаю зачем они ... :-[
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
$x, $y нужны для определения области внутри которой функция будет искать заданную картинку.
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
ну вот видео http://www.youtube.com/watch?v=J6yOxk5Xzbo
как мне указать окно и почему там этот немец пишет $x=0 $y=0 почему 0 ? Оо
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
млин короче не получается выдает


>"C:\Program Files\AutoIt3\SciTE\..\autoit3.exe" /ErrorStdOut "C:\Documents and Settings\Admin\Рабочий стол\image1.au3"
C:\Program Files\AutoIt3\Include\ImageSearch.au3 (40) : ==> Subscript used with non-Array variable.:
if $result[0]="0" then return 0
if $result^ ERROR
>Exit code: 1 Time: 3.231

что делать ?
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
Переменная в которую пытается быть произведена запись не является массивом.
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
короче ошибку убрал но не находит он картинку

вот скрипт что не так ?

Код:
#include <ImageSearch.au3>
WinWaitActive('Войны Империй - Mozilla Firefox')
HotKeySet("{PAUSE}","Escape")
While 1
$x=0
$y=0
$result = _ImageSearch("pr1.bmp",1,$x,$y,100)
If $result=1 Then
	MouseMove($x,$y,100)
	MsgBox(0,"Found","Found a empty recycle bin here...")
EndIf
  WEnd
	Func Escape()
Exit
EndFunc
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
Насколько я помню ImageSearch имеет всего 3 параметра. Картинку которую надо найти, параметр возвращаемых координат и tolerance.
попробуй вот так:
Код:
_ImageSearch("pr1.bmp",1,5)
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
Ну и конечно $result равляться 1 при использовании _ImageSearch никак не может. Он может = 0 или массиву. Правда у меня этот ImageSearch слегка модифицирован, поэтому не возьмусь утверждать не видя кода исходной функции.

А так, в принципе в самом файле ImageSearch.au3 есть описания каждой функции:
Код:
;===============================================================================
;
; Description:      Find the position of an image on the desktop
; Syntax:           _ImageSearchArea, _ImageSearch
; Parameter(s):
;                   $findImage - the image to locate on the desktop
;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of
;                                image differ from desktop. e.g GIF
;                   $resultPosition - Set where the returned x,y location of the image is.
;                                     1 for centre of image, 0 for top left of image
;                   $x $y - Return the x and y location of the image
;
; Return Value(s):  On Success - Returns 1
;                   On Failure - Returns 0
;
; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
;       a desktop region to search
;
;===============================================================================

Где предельно ясно что как и куда писать и что будет результатом.
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
неа не работает все равно если сделать 1ую чать то он просто не запускаться
если 2ую то он просто в левом верхнем углу ловит первый как я понял пиксель и говорит что мол это то что я ищу ....
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
Belfigor сказал(а):
Ну и конечно $result равляться 1 при использовании _ImageSearch никак не может. Он может = 0 или массиву. Правда у меня этот ImageSearch слегка модифицирован, поэтому не возьмусь утверждать не видя кода исходной функции.

А так, в принципе в самом файле ImageSearch.au3 есть описания каждой функции:
Код:
;===============================================================================
;
; Description:      Find the position of an image on the desktop
; Syntax:           _ImageSearchArea, _ImageSearch
; Parameter(s):
;                   $findImage - the image to locate on the desktop
;                   $tolerance - 0 for no tolerance (0-255). Needed when colors of
;                                image differ from desktop. e.g GIF
;                   $resultPosition - Set where the returned x,y location of the image is.
;                                     1 for centre of image, 0 for top left of image
;                   $x $y - Return the x and y location of the image
;
; Return Value(s):  On Success - Returns 1
;                   On Failure - Returns 0
;
; Note: Use _ImageSearch to search the entire desktop, _ImageSearchArea to specify
;       a desktop region to search
;
;===============================================================================

Где предельно ясно что как и куда писать и что будет результатом.
описание видел но если бы оно было на русском другой разговор с анг я не оч )))
 

Belfigor

Модератор
Локальный модератор
Сообщения
3 598
Репутация
938
{OverQuoteWarn}
 

Redline

AutoIT Гуру
Сообщения
506
Репутация
369
У меня заработало после того как переименовал файл ImageSearch.dll, который лежит здесь:
http://autoit-script.ru/index.php?topic=175.0
На такой: ImageSearchDLL.dll
PS: Искал иконку сетевого окружения, предварительно снятую через PrintScreen и обрезанную. Ищет довольно долго, но чем она ближе к верхнему левому углу, тем быстрее :D.
Чем меньше tolerance(последняя цифра в _ImageSearch), тем быстрее сканирует ибо меньше вариаций цветов.
Мой совет - действуй через PixelSearch - ищи ключевые пиксели, которые присутствуют на картинке и по ним определяй та картинка или нет.
Код:
#include <ImageSearch.au3>
;~ WinWaitActive('Войны Империй - Mozilla Firefox')
HotKeySet("{PAUSE}", "Escape")
$x1 = 0
$y1 = 0

While 1
	$result = _ImageSearch('1.bmp', 1, $x1, $y1, 0)
	If $result = 1 Then
		MouseMove($x1, $y1, 3)
		MsgBox(0, 'Found', 'Found!')
	EndIf
WEnd
Func Escape()
	Exit
EndFunc   ;==>Escape
 
Автор
S

Sinel

Новичок
Сообщения
28
Репутация
1
ну хз у меня скорость нормальная проверка по пикселям да но не всегда уместна ... у меня ошибка была в названии картинки )))))) то есть место png писал bmp ..... короче не суть ... у меня такой вопрос есть ли какието еще команды по мимо If ? типо Do или еще че то просто я так понял If это типо может надет а может найти но скрипт дальше топает мне надо что бы он ждал именно этой картинки кто подскажет?
 

NoMad73rus

Продвинутый
Сообщения
124
Репутация
80
Sinel сказал(а):
мне надо что бы он ждал именно этой картинки кто подскажет?
Код:
While 1
    $result = _ImageSearch('1.bmp', 1, $x1, $y1, 0)
    If $result = 1 Then ;если картинка найдена
        ExitLoop ; выходим из цыкла
    EndIf
WEnd


НУ или

Код:
Do
    ;Sleep(100)
Until _ImageSearch('1.bmp', 1, $x1, $y1, 0) = 1
 
Верх