Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: IgorIgor on November 25, 2016, 08:34:59 PM
-
Не могу привязать кликерманн к окну.
Справку читал. По форуму полазил.
Привязывается, но не работает.
Начнем по порядку. В программировании ноль.
Но с УОпилотом знаком уже не первый десяток лет.
Выставить координаты, привязать к цвету, настроить поиск картинок могу. ИФ, ВАЙЛ, бла-бла-бла, не самыми рациональными методами, но скрипт, для практически любых своих нужд, написать могу.
Да и в кликерманне все это освоил за считанные минуты.
Но вот проблему привязки к окну решить не могу.
Имею v4.7 и v.4.12.
Открываю скрипт в редакторе.
Вот так выглядят координаты с включенной привязкой к окну ( внизу окна "привязка к окну "***"): LCLICK(580,296) // 0
Вот так без привязки (Режим эмуляции): LCLICK(774,136) // 44708
Действия соответственно никакие не выполняет. На сколько я понимаю он "плохо" привязался к окну и не всю информацию может с него считать, и отправить ему соответственно.
После включения режима привязки. координаты с рабочего окна вроде бы считывает правильно (0,0 слева,сверху именно рабочего окна, а не рабочего стола).
Для привязки к окну в первых строчка скрипта указываю:
$h = hget(х,у)
hset($h, 1)
Объясните тупому пожалуйста.
Вся информация в интернете сводиться к "нажми альт+W и все будет работать".
И сразу еще вопрос: существует ли комбинация клавишь для вставки ТОЛЬКО координат, а не целой строки с командой как на аль+Q?
-
Да давайте уж все сразу покажу:
start:
LCLICK(774,136) // 44708
WAITMS (RND(1000,2500))
GETSCREEN
$color = pxl (114,482)
IF($color = 7136108)
LCLICK(118,552) // 2236962
WAITMS (500)
LCLICK(174,578) // 2632753
WAITMS (1500)
LCLICK(174,578) // 2632753
WAITMS (1500)
LCLICK(698,182) // 2764340
WAITMS (1500)
LCLICK(748,78) // 2764597
WAITMS (1500)
END_IF
GETSCREEN
$color = pxl (358,482)
IF($color = 7136108)
LCLICK(358,482) // 2236962
WAITMS (500)
LCLICK(174,578) // 2632753
WAITMS (1500)
LCLICK(174,578) // 2632753
WAITMS (1500)
LCLICK(698,182) // 2764340
WAITMS (1500)
LCLICK(748,78) // 2764597
WAITMS (1500)
END_IF
GETSCREEN
$color = pxl (602,482)
IF($color = 7136108)
LCLICK(602,482) // 2236962
WAITMS (500)
LCLICK(174,578) // 2632753
WAITMS (1500)
LCLICK(174,578) // 2632753
WAITMS (1500)
LCLICK(698,182) // 2764340
WAITMS (5100)
LCLICK(748,78) // 2764597
WAITMS (1500)
END_IF
GOTO(start)
Значит есть кнопка "обновить", скрипт по ней кликает и ждет 1-1.5сек
После этого в 4-ёх местах может появиться нужный мне объект, на котором нужно еще несколько кликов сделать. Скрипт вычисляет их по цвету определенного пикселя, который строго в 4-ёх же местах и может находиться.
Когда я выполняю привязку альт+W, скрипт перестает воспринимать цвета окна - это раз. И когда я переназначаю координаты под привязанное окно, я уже не могу определить цвета что бы забить в скрипт.
А два - перестает работать в принципе.
Метод описаный тут http://crapware.aidf.org/forum/index.php?topic=33.msg562#msg562 (http://crapware.aidf.org/forum/index.php?topic=33.msg562#msg562)
Сложноват для освоения.
А этот код не отпускает кнопку мыши:
$WM_LBUTTONDOWN = 0x0201
$WM_LBUTTONUP = 0x0202
$MK_LBUTTON = 0x0001
$HWND = 263332
$x = 768
$y = 98
// нажали
postmessage($HWND, $WM_LBUTTONDOWN, $MK_LBUTTON, $x + ($y*65536));
waitms(50)
// отпустили
postmessage($HWND, $WM_LBUTTONUP, $MK_LBUTTON, $x + ($y*65536));
-
Объясните тупому пожалуйста.
Вся информация в интернете сводиться к "нажми альт+W и все будет работать".
Так оно и есть. Не надо думать что вот это
$h = hget(х,у)
hset($h, 1)
чем то отличается от Alt+W. Это лишь дополнительная возможность, если не работает используй основной режим.
И сразу еще вопрос: существует ли комбинация клавиш для вставки ТОЛЬКО координат, а не целой строки с командой как на аль+Q?
В редакторе нажми на значок "Планшет с листочком". При этом координата будет попадать в буфер.
Графику кликер может не видеть из за аппаратного ускорения в браузере например, или флешь игре.
-
А этот код не отпускает кнопку мыши:
$WM_LBUTTONDOWN = 0x0201
$WM_LBUTTONUP = 0x0202
$MK_LBUTTON = 0x0001
$HWND = 263332
$x = 768
$y = 98
// нажали
postmessage($HWND, $WM_LBUTTONDOWN, $MK_LBUTTON, $x + ($y*65536));
waitms(50)
// отпустили
postmessage($HWND, $WM_LBUTTONUP, $MK_LBUTTON, $x + ($y*65536));
такая же ситуация: кнопка ищется, нажимается, но не отпускается.
скрипт:
$NoxPlayer = 10423290 // изменяется при каждом запуске целевой программы, нужно каждый раз вписывать заново
HSET($NoxPlayer,1)
$WM_LBUTTONDOWN = 0x0201 // Левая кнопка мыши нажата.
$WM_LBUTTONUP = 0x0202 // Левая кнопка мыши отпущена.
$MK_LBUTTON = 0x0001 // Левая кнопка мыши находится в нажатом состоянии.
//ищем картинку "Посмотреть видео"
GETSCREEN
IF_PICTURE_IN (400,500,600,600,"11.bmp",-1,70) // поиск с 70% в заданном квадрате
WAITMS(100)
print("ПОСМОТРЕТЬ ВИДЕО найден в координатах X=", $_return1, ", Y=", $_return2) //пишем в лог
postmessage($NoxPlayer, $WM_LBUTTONDOWN, $MK_LBUTTON, $_return1 + ($_return2*65536))
postmessage($NoxPlayer, $WM_LBUTTONUP, $MK_LBUTTON, $x + ($_return2*65536))
WAITMS(800)
postmessage($NoxPlayer, $WM_LBUTTONUP, $MK_LBUTTON, $_return1 + ($_return2*65536))
END_IF
HSET($NoxPlayer,0)
привязываю к окну эмулятора NOX, win 7 32
скрины прикрепил.
-
Прошу посмотреть скрины и прокомментировать.
На них видно, что кнопка "Посмотреть видео" НАЖИМАЕТСЯ при передаче данному окну winapi. Значит поиск по изображению происходит и происходит нажатие левой клавиши мыши в нужных координатах.
Вот только "postmessage($NoxPlayer, $WM_LBUTTONUP, $MK_LBUTTON, $_return1 + ($_return2*65536))" не срабатывает.
-
такая же ситуация: кнопка ищется, нажимается, но не отпускается.
скрипт:
$NoxPlayer = 10423290 // изменяется при каждом запуске целевой программы, нужно каждый раз вписывать заново
HSET($NoxPlayer,1)
$WM_LBUTTONDOWN = 0x0201 // Левая кнопка мыши нажата.
$WM_LBUTTONUP = 0x0202 // Левая кнопка мыши отпущена.
$MK_LBUTTON = 0x0001 // Левая кнопка мыши находится в нажатом состоянии.
//ищем картинку "Посмотреть видео"
GETSCREEN
IF_PICTURE_IN (400,500,600,600,"11.bmp",-1,70) // поиск с 70% в заданном квадрате
WAITMS(100)
print("ПОСМОТРЕТЬ ВИДЕО найден в координатах X=", $_return1, ", Y=", $_return2) //пишем в лог
postmessage($NoxPlayer, $WM_LBUTTONDOWN, $MK_LBUTTON, $_return1 + ($_return2*65536))
postmessage($NoxPlayer, $WM_LBUTTONUP, $MK_LBUTTON, $x + ($_return2*65536))
WAITMS(800)
postmessage($NoxPlayer, $WM_LBUTTONUP, $MK_LBUTTON, $_return1 + ($_return2*65536))
END_IF
HSET($NoxPlayer,0)
привязываю к окну эмулятора NOX, win 7 32
скрины прикрепил.
Потому, что неправильно написано.
Была уже тема При клике мышка не отпускает кнопку (эмулятор нокс) (http://crapware.aidf.org/forum/index.php?topic=3366.msg22911#msg22911)
-
спасибо. работает :)
-
Еще вопрос про нажатие кнопки ESC в том же Nox`е
конструкция:
postmessage($NoxPlayer, 0x0100, #ESC, 0)
WAIT(1)
postmessage($NoxPlayer, 0x0101, #ESC, 0)
в MS Paint работает, а в Nox`е - нет
-
Еще вопрос про нажатие кнопки ESC в том же Nox`е
конструкция:
postmessage($NoxPlayer, 0x0100, #ESC, 0)
WAIT(1)
postmessage($NoxPlayer, 0x0101, #ESC, 0)
в MS Paint работает, а в Nox`е - нет
попробуй задействовать lParam так, как это предлагает msdn.
для WM_KEYDOWN, в принципе ничего интересного, кроме как количества нажатий кнопки (имитация удерживания кнопки клавиатуры при печатании) - первые 16 бит.
WM_KEYDOWN
lParam
The repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown following.
Bits Meaning
0-15 The repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. If the keystroke is held long enough, multiple messages are sent. However, the repeat count is not cumulative.
16-23 The scan code. The value depends on the OEM.
24 Indicates whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
25-28 Reserved; do not use.
29 The context code. The value is always 0 for a WM_KEYDOWN message.
30 The previous key state. The value is 1 if the key is down before the message is sent, or it is zero if the key is up.
31 The transition state. The value is always 0 for a WM_KEYDOWN message.
для WM_KEYUP уже вроде как нужны обязательные параметры (не равные нулю, как в WM_KEYDOWN) в lParam :-\ .
lParam
The repeat count, scan code, extended-key flag, context code, previous key-state flag, and transition-state flag, as shown in the following table.
Bits Meaning
0-15 The repeat count for the current message. The value is the number of times the keystroke is autorepeated as a result of the user holding down the key. The repeat count is always 1 for a WM_KEYUP message.
16-23 The scan code. The value depends on the OEM.
24 Indicates whether the key is an extended key, such as the right-hand ALT and CTRL keys that appear on an enhanced 101- or 102-key keyboard. The value is 1 if it is an extended key; otherwise, it is 0.
25-28 Reserved; do not use.
29 The context code. The value is always 0 for a WM_KEYUP message.
30 The previous key state. The value is always 1 for a WM_KEYUP message.
31 The transition state. The value is always 1 for a WM_KEYUP message.
если я все правильно понял, то lParam для WM_KEYUP в бинарном виде должен выглядеть так - 11000000000000000000000000000001 . в hex к примеру это - 0xC0000001 . попробовал всунуть такой параметр в postmessage, и получил ошибку от кликермана >:( . на этом мои эксперименты с lParam закончились.
msdn - https://msdn.microsoft.com/en-us/library/windows/desktop/ff468861(v=vs.85).aspx