Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2012, 14:03   #1
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию Клик мыши по цвету

Доброго времени суток.

Как программно сделать клик по заданому цвету пикселя?

Например у меня есть цвет (R19 G211 B17), он записывается в Lab'ле как 19 211 17. Мне необходимо, чтобы при появлении этого цвета на мониторе, в это место делался клик левой кнопкой мыши по пикселю.

Прошу помоч... Желательно исходником...

Облазил инет, нигде не могу найти И...
xRamzeSx вне форума Ответить с цитированием
Старый 05.02.2012, 14:52   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
нигде не могу найти И...
Ессно нигде. Трейнеры к играм пишутся совсем по другому. Никакие клики тебе не помогут так просто.
Впрочем если интересно ищи примеры с функцией mouse_event, хотя врядли тебе это поможет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.02.2012, 15:38   #3
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Нашёл это:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
Pt: TPoint;
begin
Application.ProcessMessages;
Pt.x:= Button2.Left + (Button2.Width div 2);
Pt.y:= Button2.Top + (Button2.Height div 2);
Pt:= ClientToScreen(Pt);
Pt.x:= Round(Pt.x * (65535 / Screen.Width));
Pt.y:= Round(Pt.y * (65535 / Screen.Height));
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, Pt.x, Pt.y, 0, 0);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, Pt.x, Pt.y, 0, 0);
Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, Pt.x, Pt.y, 0, 0);
end;
Но в этом коде мышь кликает по центру кнопки. Как исправить код, чтобы функция брала значения из Label'ов например и кликала на окно?
xRamzeSx вне форума Ответить с цитированием
Старый 05.02.2012, 15:47   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
и кликала на окно?
Эта функция не кликает на окно. Она посылает сигналы о нажатии мышки в определенных экранных координатах.
Соответственно нужно узнать в каких координатах нужный тебе цвет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.02.2012, 15:58   #5
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

В этом и проблема, что мне нужно найти этот пиксель, и его координаты...
xRamzeSx вне форума Ответить с цитированием
Старый 05.02.2012, 16:50   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как найдешь отпишись.
Интересно посмотреть на еще одно решение этой авантюры.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.02.2012, 17:51   #7
xRamzeSx
Форумчанин
 
Регистрация: 24.01.2010
Сообщений: 151
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Как найдешь отпишись.
Интересно посмотреть на еще одно решение этой авантюры.
В место того, чтобы говорить, помогли бы новичку...
xRamzeSx вне форума Ответить с цитированием
Старый 05.02.2012, 18:44   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Чем?
Как кликнуть мышкой я сказал.
Как вычислить цвет на экране? Это зависит от самой игры. Кто знает что она использует для отображения. Бывают игры, что рисуют на канве своего окна, а бывают и такие которые взаимодействуют в обход ОС напрямую на видеокарту.
Эта задача скорее сродни легендарной задаче о двух трубах и фонтане.
Если бы я взламывал игру то этот метод - последнее к чему бы я обратился.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 06.02.2012, 00:58   #9
Larboss
Недо
Участник клуба
 
Регистрация: 11.08.2011
Сообщений: 1,394
По умолчанию

Этот метод имеет смысл применить если есть античит и в память игры нельзя лезть или обойти защиту не получается.

1. Создаем битмап (буфером назовем).
2. В буфер отправляем картинку с экрана (GetDC(0)).
3. Используя ScanLine ищем пиксель с необходимым цветом. Кстати, проверка на RGB это отдельная часть кода.
4. При выполнении этапа 3 получаем кроме цвета координаты искомого пикселя.
5. Наводим мышь, используя SetCursorPos.
6. Кликаем мышью с помощью mouse_event.

Примерно так.

Есть готовые функции и код. За денежку могу продать и объяснить.
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
Larboss вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поймать клик мыши maks5 Общие вопросы Delphi 1 06.01.2012 00:01
Клик по цвету -=L.Morgan=- Помощь студентам 3 01.07.2009 11:32
Клик мыши по кнопке SeregaKo Общие вопросы Delphi 10 30.04.2009 08:14
TСhart, клик мыши и координаты XY, Определение координат оси при клике мыши Aravild Компоненты Delphi 1 31.01.2009 16:28
Клик мыши stayer Общие вопросы Delphi 1 30.10.2008 19:53