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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 02:13   #1
GvR
Пользователь
 
Аватар для GvR
 
Регистрация: 03.11.2009
Сообщений: 29
Вопрос Как "кликнуть" по пикселю

Может кто знает как кликнуть по появившихся на монеторе пикселях красного цвета (#F00000) Может есть у кого функция? Я сам не имею представления как ето реализовать...
GvR вне форума Ответить с цитированием
Старый 14.11.2009, 02:43   #2
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Делаем скриншот,пробегаемся по полученной картинки, если находим красный пиксель, то с помощью postmessage шлём клик в точку экрана.

Так делать скриншот:
Код:
Procedure ScreenShot(Path: String);
Var
  Bmp : TBitmap;
  DC : HDC;
Begin
  Bmp := Tbitmap.Create;
  Bmp.Height := Screen.Height;
  Bmp.Width := Screen.Width;
  DC := GetDC(0);
  Bitblt(Bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, DC, 0, 0, SRCCOPY);
  ReleaseDC(0, DC);
//тут пробегаемся по картинке двумя вложенными циклами for и проверяем if bmp.Canvas.Pixels[i,j]=clRed then ...
  bmp.free;
end;
TwiX вне форума Ответить с цитированием
Старый 14.11.2009, 03:51   #3
Greblin
Меркантильный кю
Участник клуба
 
Аватар для Greblin
 
Регистрация: 02.02.2008
Сообщений: 1,001
По умолчанию

Ну и задачку Вы себе придумали. Мало того, что пробежаться примерно по миллиону пикселей не очень быстрая задача, так ещё и распознать красный цвет не так легко. Точное значение FF0000 вряд ли будет появляться, будут искажения
Для чего, если не секрет.

P.S. Подозреваю, что для автоматизации какой-нибудь онлайн-игры. Надеюсь, ТС развеет мои подозрения
Росли вроде умными, выросли дурнями... (c)А.Васильев
Greblin вне форума Ответить с цитированием
Старый 14.11.2009, 15:35   #4
GvR
Пользователь
 
Аватар для GvR
 
Регистрация: 03.11.2009
Сообщений: 29
По умолчанию

Ядро ищущей функции может найти свое назначение для автоматизации многих задач. Даже как заметел Greblin для онлайн игр.
GvR вне форума Ответить с цитированием
Старый 14.11.2009, 21:35   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Ну можно же смотреть не каждый пиксель:
Код:
procedure TForm1.Panel1Click(Sender: TObject);
begin
showmessage('!!');
end;

procedure TForm1.Button1Click(Sender: TObject);
const
scale=50;
var
I,J:integer;
begin
for i:=0 to screen.Width div scale do
for j:=0 to screen.Height div scale do
begin
if getpixel(getdc(0),i*scale,j*scale)=$0000FF then
begin
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_MOVE, i*scale * (65535 div Screen.Width),j*scale* (65535 div Screen.Height), 0, 0);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTDOWN, i*scale * (65535 div Screen.Width),j*scale* (65535 div Screen.Height), 0, 0);
  Mouse_Event(MOUSEEVENTF_ABSOLUTE or MOUSEEVENTF_LEFTUP, i*scale * (65535 div Screen.Width),j*scale* (65535 div Screen.Height), 0, 0);
  exit;
end;
caption:=inttostr(i*scale)+' '+inttostr(j*scale);
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
panel1.Color:=$0000FF
end;
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 14.11.2009, 22:12   #6
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Я думаю скорость резко возрастёт, если знать где именно(ограниченая область) появляется пиксель и сканировать только её.

Кстати, а вдруг будет найден не один пиксель?
Вавел из ГМТУ вне форума Ответить с цитированием
Старый 14.11.2009, 22:26   #7
Lime
Форумчанин
 
Аватар для Lime
 
Регистрация: 10.02.2009
Сообщений: 815
Радость

Цитата:
Сообщение от Вавел из ГМТУ Посмотреть сообщение
Я думаю скорость резко возрастёт, если знать где именно(ограниченая область) появляется пиксель и сканировать только её.

Кстати, а вдруг будет найден не один пиксель?
Я себе представляю не пробежку по пикселям а разбиение экрана по некой матрице и определение среднего тона в сегментах , соответственно не пробегая по всем пикселям а соответственно немного перескакивая - зависит от сегментов.
^
Это для онлайн игры)
Lime вне форума Ответить с цитированием
Старый 14.11.2009, 22:35   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

чтоб сделать среднее значение все равно нужно проверять каждый пиксель...
но вот что я думаю...а ведь Canvas.Pixel не быстрая вещь...значит нужжно чтото иное..
но нужно ограничивать область, пустое блуждание по экрану, трата ресов лишь.

ЗЫ: если опечатался прошу прощения глаз подбили в драке.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 14.11.2009, 23:35   #9
GvR
Пользователь
 
Аватар для GvR
 
Регистрация: 03.11.2009
Сообщений: 29
По умолчанию

Вот пример для чего будет использоваться программа:
Прямая ссылка
Нужно будет кликать по шариках...
Какую ф-цыю для етого нужно
GvR вне форума Ответить с цитированием
Старый 14.11.2009, 23:53   #10
Вавел из ГМТУ
Форумчанин
 
Регистрация: 19.06.2009
Сообщений: 896
По умолчанию

Можно сканировать не все пиксели, а по сетке. Например через 20 - 30 пикселей.
Вавел из ГМТУ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как в Twebbrowser кликнуть по ссылке? AquaKlaster Работа с сетью в Delphi 5 27.10.2010 17:52
КАК ПРОГРАМНО КЛИКНУТЬ ПО ССЫЛКЕ? AquaKlaster Работа с сетью в Delphi 3 01.05.2009 21:31
Как кликнуть по баннеру eldar Работа с сетью в Delphi 1 22.09.2008 09:16
Как програмно дважды кликнуть в RichEdit? apromix Общие вопросы Delphi 10 23.05.2008 17:09
как с делфи кликнуть мышю? Iceman Помощь студентам 1 23.02.2008 11:59