Помощь - Поиск - Пользователи - Календарь
Полная версия: Определение формы курсора.Решено
UoKit.com Форумы > Кликер > UO Pilot
Мишаня через тире
Здравствуйте. Хочу написать бота для игры Атлантика онлайн.
Игра самая обычная - бегаешь по локациям, наводишь курсор на моба, нападаешь.
Курсор при наведении на моба меняет форму, это могло бы весьма[i] упростить процесс выцепления мобов из окружающей среды, но. Скриншоты делаемые уопилотом курсор не показывают в принципе.
В связи с этим 2 вопроса.
1) Возможно ли как-то опционально таки получить курсор на скрине, для дальнейшей обработки. Если нет, то...
2) Как я понимаю, с точки зрения windows курсор такое же окно как и все остальные. Является ли оно дочерним по отношению к какому-либо окну, можно ли получить информацию о нем из списков дочерних окон?

Спасибо за помощь заранее. Если нужна какаянть информация дополнительная, предоставлю.


зы. собсно форма не важна, очевидно. Мне нужно отловить один единственный пиксель на курсоре, для реализации.

Вопрос решен. Изображение текущего курсора элегантно и просто выдирается из ресурсов самой игры.
Реализация на С, если кому интересно:
CURSORINFO ci;
ICONINFO ii;

ci.cbSize= sizeof(CURSORINFO);
if(!GetCursorInfo(&ci))
MessageBox(NULL, "GetCursorInfo", "Oops", MB_ICONERROR);
hCursor= ci.hCursor;

ii.fIcon= FALSE;
if(!GetIconInfo (hCursor, &ii))
MessageBox(NULL, "GetIconInfo", "Oops", MB_ICONERROR);
hBitmap= ii.hbmColor;

Осталось одно маленькое неудобство, в том, что данная реализация не работает, если окно игры активно.
Сорри, но дальше возиться неохота, проще выводить его в пассив, через несколько секунд после клика.
Всем спасибо, удачной охоты ).
Fors1k
Цитата(Мишаня через тире @ 13.1.2020, 16:18) *

1) Возможно ли как-то опционально таки получить курсор на скрине, для дальнейшей обработки.

Подключись тимвивером к компу, поставь галочку "отображать курсор клиента", сделай скрин.


Цитата(Мишаня через тире @ 13.1.2020, 16:18) *
Мне нужно отловить один единственный пиксель на курсоре, для реализации
Цитата(Мишаня через тире @ 13.1.2020, 16:18) *
Скриншоты делаемые уопилотом курсор не показывают в принципе.

Если пилот не может видеть курсор, то как он поймет что на нем изменился пиксель?)
Мишаня через тире
Цитата(Fors1k @ 13.1.2020, 18:20) *

Подключись тимвивером к компу, поставь галочку "отображать курсор клиента", сделай скрин.
Если пилот не может видеть курсор, то как он поймет что на нем изменился пиксель?)


Так вопрос собственно в этом и состоит. Каким образом из пилота можно поймать изменение формы и цвета курсора. Ну или его части ). Смысл делать скрин сторонним по нету, так-то я его и в пайнте нарисовать могу.
Мне надо сделать так чтобы это можно было определить из скрипта.
DarkMaster
Ну поидее если стороннее что-то видит мышь на скрине (далеко не факт), то можно этим сторонним сохранять, подгружать изображение в пилот и искать его.
Собственно тут нужен будет набор:
loadimage+findimage.
Скринить лучше на ram диск, а то и так цепочка тормозная ожидается.
DarkMaster
хе. мысли сходятся =)
Мишаня через тире
Цитата(cirus @ 14.1.2020, 5:20) *


Чорт, говорила же мне мама в детстве, - учись Мишаня через тире юзать поиск. А я не слушался. Огромное спасибо. Тема закрыта.
Мишаня через тире
Цитата(Мишаня через тире @ 14.1.2020, 6:38) *

Чорт, говорила же мне мама в детстве, - учись Мишаня через тире юзать поиск. А я не слушался. Огромное спасибо. Тема закрыта.


Увы . С удивлением увидел на скрине стандартный виндовый курсор мыши.
Плюнул на все, вспомил молодость и пошел писать свой скринер. И вот тут-то в процессе и выяснилось, что сия программа дорисовывает на скрин текущий стандартный курсор винды. Ибо средствами winapi получить изображение курсора невозможно, так как он вне всех контекстов, в том числе и дисплея.
Итого. Как из пилота получить доступ к видеобуферу? Можно даже на ассемблере ).
DarkMaster
Цитата
изображение курсора невозможно, так как он вне всех контекстов, в том числе и дисплея

А можно где-то почитать? а то мельком пробовал искать и не нашел интересующей инфы. В частности очень интересно каким образом он отрисовывается в рамках использования данного метода для других целей.

Цитата
Как из пилота получить доступ к видеобуферу?

Есть небезосновательные подозрения, что это не поможет.
Мишаня через тире
Цитата(DarkMaster @ 15.1.2020, 14:14) *

А можно где-то почитать? а то мельком пробовал искать и не нашел интересующей инфы. В частности очень интересно каким образом он отрисовывается в рамках использования данного метода для других целей.


Информация взята отсюда https://www.codeproject.com/Articles/12850/...he-Mouse-Cursor.

Конечно, это не msdn, но учитывая, что ни один контекст устройств изображения курсора не видит, это весьма похоже на правду.

Более детальную информацию, учитывая мои 3 слова на англ., я в ингнете не нашел, может у Вас получится )

зы А чем плох видеобуфер? Насколько я еще помню ассемблер, просто массив точек в памяти. Если погуглить можно даже абсолютный адрес найти. Ну, я так думаю )

зы 2 Мне тут на одном форуме вешают, что можно из дескриптора курсора получить ид ресурса, со всеми вытекающими. Хоть убей не помню такого, и найти не могу. Может подскажет кто?
DarkMaster
Цитата
зы А чем плох видеобуфер? Насколько я еще помню ассемблер, просто массив точек в памяти. Если погуглить можно даже абсолютный адрес найти. Ну, я так думаю )

тем, что там его может не быть. Не все, что вы видите идет через видеобуфер. Часть наложений его минует. Сюрприз.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2024 Invision Power Services, Inc.