Показать сообщение отдельно
  #3  
Старый 27.06.2018, 18:18
Аватар для LIONSMILE
LIONSMILE LIONSMILE вне форума
Новичок
 
Регистрация: 19.03.2018
Сообщения: 51
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Добрый вечер многоуважаемый Alegun!

Туть суть немного в другом. Цвет панели, это как бы я указал просто, опеределенное действие. А теперь поясню чтобы не было как раз тех самых непоняток. С главной формы я определяю координаты области экрана (верхний левый угол - X1Y1, правый нижний угол - X2Y2), в компоненте ColorDialog указываю необходимый цвет (например красный), который должен находиться в области X1Y1 X2Y2, и если он там есть то выполняется одно условие. Вот этот и есть модуль-сканер цвета, который запускается по таймеру каждые 15 секунд, и проверяет это самое условие, т.е. если допустим красный цвет попадает в область X1Y1 X2Y2 то программа выполняет действие (пускай будет клик мышки). А если сканер не находит этот красный цвет, то останавливает выполнения действия (клик мышки), при этом сканер продолжает работать и искать все в той же области искомый цвет (красный) с тем же интервалом 15 секунд, и если через вдруг при очередном сканировании находит искомый красный цвет, то возобновляет выполнение действия (клик мышки).
Этот код я видел, он мне немного не пожходит вот почему. Тут условие такое, что мышь в это время находится вне области X1Y1 X2Y2 и выполняет опеределенное действие, а этот код и определяет цвет под курсором, т.е. в том месте где находится мышь, при этом координаты нахождения мыши на экране фиксированы и записаны (т.е. никаких лево и право) и она соответственно будет бить все время в один пиксель, в одном месте.
У меня собственно в сканере (код выше) получилось сделать так:
Код:
procedure TScan.Execute;
var
  x,y : integer;
begin
  Repeat
    For x:=X1 To X2 Do
    For y:=Y1 To Y2 Do
//    If GetPixel(c.Handle,x,y)=Cl Then
    If c.Pixels[x,y]=Cl Then Synchronize(FindVisual);

  else If c.Pixels[x,y]<>Cl Then Synchronize(Conrtol);
  Until Terminated;
end;

Но тут проблема у меня в <>Cl и я это понимаю, так как значение CL может быть и больше и меньше, и оно может тоже попадать в область X1Y1 X2Y2 соответсвенно это не то требование, которое мне нужно. А как по уму записать это условие, у меня чот голова не догоняет пока.
Т.е. нужно следующее - если в области X1Y1 X2Y2 искомый цвет то выполняется процедура 1, если в этой же области этого цвета нет, то выполняется процедура 2. Однако этот искомый цвет может появляться и исчезать периодически. Для этого собственно и сделал сканер, который работает по времени.
Добиться того чтобы выполнялось действие 1 у меня в принципе получилось, вот теперь осталось получить действие 2 при работе сканера... а на что заменить вот этот кусок If c.Pixels[x,y]=Cl я не знаю.
Ответить с цитированием