mef-t
Осваивающий
- Сообщения
- 306
- Репутация
- 30
Добрый день.
Ниже под спойлером выложил скрипт, при работе которого не всегда срабатывает MouseClick()
При этом у себя (win 10, x64) программа работает идеально. Но на win7, x64 возникают казусы. MouseClick() отрабатывает лишь периодически. Т.е. в какой то момент может сработать пару раз, моет сработать один раз, может работать достаточно долго. А затем паузы. Иногда большие.
Скрипт должен отрабатывать в игре, в открытом (оконный с максимальным разрешением) клиенте.
Цвет точно соответствует, хотя при этом я делаю проверку на разброс в 50 оттенков. Проверку цвета делал. Потому расхождения цвета более не рассматриваю (вечером запущу ежесекундное считывание цвета для пущей уверенности).
Опять же, на другом компьютере работает.
Может ли Windows Aero влиять на подобное?
Какие еще могут быть причины?
Просьба подсказать возможные варианты решения? куда посмотреть, куда копать?
Ниже под спойлером выложил скрипт, при работе которого не всегда срабатывает MouseClick()
При этом у себя (win 10, x64) программа работает идеально. Но на win7, x64 возникают казусы. MouseClick() отрабатывает лишь периодически. Т.е. в какой то момент может сработать пару раз, моет сработать один раз, может работать достаточно долго. А затем паузы. Иногда большие.
Скрипт должен отрабатывать в игре, в открытом (оконный с максимальным разрешением) клиенте.
Цвет точно соответствует, хотя при этом я делаю проверку на разброс в 50 оттенков. Проверку цвета делал. Потому расхождения цвета более не рассматриваю (вечером запущу ежесекундное считывание цвета для пущей уверенности).
Опять же, на другом компьютере работает.
Может ли Windows Aero влиять на подобное?
Какие еще могут быть причины?
Просьба подсказать возможные варианты решения? куда посмотреть, куда копать?
Код:
#RequireAdmin
While 1
If _CheckColor(Hex(PixelGetColor($500,500), 6), 'BC3FFF') Then MouseClick("left")
EndIf
WEnd
Func _CheckColor($color, $arClr, $iVari = 50)
Local $i
Local $result = 0
If StringLeft($color, 2) <> '0x' Then $color = '0x' & $color
$arClr = StringSplit($arClr, ',', 2)
For $j=0 To UBound($arClr)-1
If StringLeft($arClr[$j], 2) <> '0x' Then $arClr[$j] = '0x' & $arClr[$j]
For $i = 0 To 2
If Abs(BitAnd(BitShift($color, $i * 8), 255) - BitAnd(BitShift($arClr[$j], $i * 8), 255)) > $iVari Then
$result +=1
ExitLoop
EndIf
Next
Next
If $result < UBound($arClr) Then
Return True
Else
Return False
EndIf
EndFunc