-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
Определить цвет курсора мыши
Собственно, сабж. Определить цвет пикселя ПОД курсором я могу, а вот можно ли отследить изменение цвета самого курсора? Однозначно, должно быть какое-то событие, которое отправляет (кому-то или чему-то) инфу о том, что ВОТ ИМЕННО СЕЙЧАС надо не синий (опционально) курсор отображать, а зеленый (так же опционально)?
|
MouseGetCursor ( ) почитай в хелпе, возвращает ID курсора, мб тебе будет полезна, ничего большего сказать не могу ибо сам с этой командой не работал никогда :)
|
Цитата:
Цитата Belfigor
сам с этой командой не работал никогда »
|
Тогда как вы можете советовать использовать её? :unsure:
Цитата:
Цитата Frost_Imp
можно ли отследить изменение цвета самого курсора? »
|
Метод мне лично не попадался, но полагаю это будет возможно только если извлечь изображение курсора и проанализировать с помощью _GDIPlus*. Но это только в теории.
P.S
Для чего это нужно, может есть другое, более удобное решение задачи?
|
есть D3D окно (игровое), в нем курсор - стандартный (то есть ID не меняется в теории, на практике еще не проверял). Когда при перемещении курсор "наталкивается" на определенный предмет - он тупо меняет цвет. Мне бы в теории хотелось при этом эмулировать нажатие на ЛКМ, вот только отследить момент, когда курсор находится НАД искомым объектом не могу
|
Цитата:
Цитата Frost_Imp
Когда при перемещении курсор "наталкивается" на определенный предмет - он тупо меняет цвет. »
|
А этот предмет не имеет цветового отличия? Или можеть быть вовсе у него есть CtrlID?
А как на счёт варианта проверки местоположения курсора? Задать координаты и проверять их в цикле.
|
Цитата:
Цитата Creat0R
А этот предмет не имеет цветового отличия? Или можеть быть вовсе у него есть CtrlID? »
|
Вероятно, я повел тебя по ложному пути, назвав искомый предмет "предметом" =) Предмет перемещается, его координаты непостоянные. Обычный игровой персонаж. Глобальная задача - в автоматическом режиме найти его и осуществить клик.
Цитата:
Цитата Creat0R
А как на счёт варианта проверки местоположения курсора? Задать координаты и проверять их в цикле. »
|
Ну вот об этом выше и написал, координаты, в котором курсор может поменять цвет, абсолютно рандомные
|
Цитата:
Цитата Frost_Imp
Глобальная задача - в автоматическом режиме найти его и осуществить клик. »
|
У него есть отличительные цвета? Можно через PixelSearch...
|
Цитата:
Цитата Creat0R
У него есть отличительные цвета? Можно через PixelSearch... »
|
Слишком сложно. Во-первых графики много, цветов много, искать на всем икране определенный пиксель - муторно. Вероятно, каким-то образом бы помог PixelCheckSum, но... Какова тогда концепция поиска? Как передать координаты найденного пикселя курсору мыши для перемещения?
|
Дай скрин, как выглядят твои курсоры.
|
Вложений: 2
Цитата:
Цитата Sylver Dragon
Дай скрин, как выглядят твои курсоры. »
|
Вот
|
MouseGetCursor ( ) возвращает 0, то есть
Возвращаемое значение
Один и следующих идентификаторов ID Number:
0 = UNKNOWN
|
Frost_Imp,
Примерно так:
Код:
While 1
$aMousePos = MouseGetPos()
$nColor = "0x" & Hex(PixelGetColor($aMousePos[0], $aMousePos[1]), 6)
If $nColor = 0x343924 Then
MsgBox(64, 'Title', "Cursor changed")
;do something
EndIf
Sleep(10)
WEnd
Тут в цикле проверяем цвет пикселя под курсором, если совпадает, то выводим сообщение. Таким же способом можно указать целую палитру цветов, чтобы определить что курсор над нужным элементом (предметом).
|
Ну тут получается скорее поиск цвета, нежели изменение самого цвета курсора. Тогда проще PixelSearch делать, там то участие человека не нужно, в твоем коде мышкой надо самостоятельно водить. Или MouseMove делать. Как решение глобальной задачи - реализуемо, уже проверил и протестил. Но вот конкретный вопрос (изменение цвета курсора) не решает
|
1) Обрати внимание, что положение курсора в игре может отличаться от реального положения курсора на экране. То есть к примеру реальное положение курсора на экране - (100;200), а с виду "кажется", что он находится в координатах (200;250).
2) Курсор могут "перекрывать" различные игровые элементы. Ну... То есть немного менять его цвет. Или, к примеру, отображение какой-либо подсказки на экране может его вообще перекрыть.
3) PixelGetColor($aMousePos[0], $aMousePos[1]) получит цвет пиксела под реальным курсором. Попробуй добавить к координатам по 1 или больше (см. п. 1), чтобы получить цвет именно нужного пиксела.
|
Время: 12:09.
© OSzone.net 2001-