Вверх ↑
Ответов: 35
Рейтинг: -1
#1: 2018-03-03 03:06:24 ЛС | профиль | цитата
Всем ку! форумчане. И все таки могёт hiasm вещи делать, если с умом подойти... Много чего зараза умеет, довольно гибкий инструмент. И чем больше кодишь ручками, тем легче в hiasm свои хотелки заюзать)))) Стоит к нему dll присобачить нужную... и все летает. решил ответить на свой вопрос сам . Вдруг кому понадобится..
Вот фишка которая быстро ищет нужный цвет.. Запилено на IC в паре с dll. На днях вспомнил про старые заморочки с поиском нужного пикселя и буквально на коленке набросал 2 приложения. 1 - Жертва, 2 - Сам поисковик. Только dll желательно в системе регнуть. Делается это просто: Забрасываем в папку C:\Windows\System32 нашу dll. Жмакаем win+r, вводим cmd, жмем enter, копируем это
regsvr32.exe "C:\WINDOWS\system32\AutoItX3.dll"
правой кнопкой мыши в консоль, выбираем вставить и повторно жмем Enter. Все..
После можно тестить прогу и пользоваться всеми возможностями данной dll.
Все файлы в архиве. Если страшно регать эту деллку то качаем ее с офф сайта. Сайт программы (там её можно скачать): http://www.autoitscript.com/autoit3/.
Ссылка на архив https://cloud.mail.ru/public/FAeq/174BVLNhi
Запускаем тестовое окно и прогу для поиска , думаю разберетесь))
В окне размером 1024х768 находит в среднем за 0.002мс.
Исходник IC:
Адекватные табуретки приветствуются
...нашел ошибку внес поправку...
Add(VBJScript,2544746,273,294)
{
@Hint=#5:Поиск|36:Window-Заголовок окна в котором ищем|25:Color-Искомый цвет в Dec |11:(Ax-верх X)|11:(Ay-Верх Y)|10:(Bx-Низ X)|10:(By-Низ Y)|36:ColWalid-Допустимое отклонение цвета|28:Step-количество пропускаемых|9:пикселей.|15:onOUTx-выдает x|15:onOUTy-выдает y|16:если цвет найден|15:onOUT dвыдает 1|20:иначе onOUT выдает 0|
WorkPoints=#6:doWork|
EventPoints=#6:onOUTx|6:onOUTy|5:onOUT|
DataPoints=#6:Window|5:Color|2:Ax|2:Ay|2:Bx|2:By|8:ColWalid|4:Step|
Script=#11:Dim oAutoIt|24:Sub doWork (Data, Index)|46:Set oAutoIt = CreateObject("AutoItX3.Control")|0:|17:window=sys.Window|15:color=sys.Color|9:ax=sys.Ax|9:ay=sys.Ay|9:bx=sys.Bx|9:by=sys.By|18:walid=sys.ColWalid|11:st=sys.Step|0:|35: if oAutoIt.WinExists (window) Then|34: oAutoIt.WinActivate (window) |19: oAutoIt.sleep 500|32: oAutoIt.WinWaitActive (window)|36: xPos = oAutoIt.WinGetPosX (window)|36: yPos = oAutoIt.WinGetPosY (window)|19: sys.onOUT "poisk"|95: myResult = oAutoIt.PixelSearch(xPos + ax, yPos + ay, xPos + bx, yPos + by, color, walid, st)|26: If IsArray(myResult)Then|51: oAutoIt.MouseMove myResult(0), myResult(1), 5|60: 'oAutoIt.MouseClick "left", myResult(0), myResult(1), 3|29: sys.onOUTx myResult(0)|29: sys.onOUTy myResult(1)|20: sys.onOUT "0"|6: Else|21: 'MsgBox "Не нашли"|14: sys.onOUT 1|9: End If |5: else|13: sys.onOUT 2|31: MsgBox("Запустите клиент!!!")|7: End If|8:End Sub |
UseName=0
}


PS: Отдельное спасибо "andrestudio" за помощь.
Если ломает регать dll-ку руками вот схема..
Не забудьте предварительно закинуть AutoItX3.dll в C:\WINDOWS\system32\
Add(MainForm,2953706,21,105)
{
Width=270
Height=190
Caption="Reg DLL"
}
Add(Button,11548175,21,210)
{
Left=5
Top=120
Width=110
Caption="Регистрация dll"
link(onClick,3169127:doWork,[])
}
Add(VBJScript,3169127,84,210)
{
@Hint=#34:Регистрация AutoItX3_dll в системе|
WorkPoints=#6:doWork|
EventPoints=#5:onOUT|
Script=#20:On Error Resume Next|24:Sub doWork (Data, Index)|0:|42:Set oShell = CreateObject("WScript.Shell")|52:Set oFS = CreateObject("Scripting.FileSystemObject")|46:Set oAutoIt = CreateObject("AutoItX3.Control")|1: |29:If Not IsObject(oAutoIt) Then|35: AutoItX3_dll = ".\AutoItX3.dll"|3: |44: If Not oFS.FileExists(AutoItX3_dll) Then|87: MsgBox "AutoItX3.dll Not found." & vbCRLF & vbCRLF & "OK ==> EXIT", 16, "Error"|16: exit Sub|10: End If|3: |67: oShell.Exec "regsvr32.exe /S " & oFS.GetFile(AutoItX3_dll).Path|3: |50: Set oAutoIt = CreateObject("AutoItX3.Control")|3: |33: If Not IsObject(oAutoIt) Then|109: MsgBox "Can not register the AutoItX3.Control object." & vbCRLF & vbCRLF & "OK ==> EXIT", 16, "Error"|16: exit Sub|10: End If|0:|6:End If|79:'================== AutoItX3.Control Object Check & Register ==================|1: |1: |35:'....Script content starts here....|0:|39: if oAutoIt.WinExists("WoT Client")Then|59: MsgBox("AutoItX3 успешно зарегистрирована в системе!")|16: sys.onOUT 1 |5: else|13: sys.onOUT 0|7: End If|8:End Sub |
UseName=0
}
Add(Label,5056016,21,154)
{
Left=15
Top=50
Width=210
Height=17
Caption="Информация"
}

карма: -4
Нечего сказать по делу? Просто проходим на natribu.org
0
Редактировалось 14 раз(а), последний 2018-03-03 19:25:41