|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Как правильно прописать условие в программе
Доброго времени суток!
Слепил простенькую программку, она же автокликер, коих на просторах инета много. Но есть один ньюанс. Мне нужно правильно прописать условие. Теперь по точнее. Я получаю координаты трех точек на экране и записываю их в 6 компонентов Edit, X и Y соответственно для каждой точки в отдельный компонент. Далее смысл таков, программа дожна с некоторым интервалом делать проверку с таким условием, что если в этих трех точках (во всех сразу) присутвует определенный цвет ( в данном случае HEX #151300 или RGB (21, 19, 0)) то работа программы останавливается, равно также если это условие присутствует в начале работы программы - то не кликает вообще. Помогите, если не сложно, прописать данное условие. Код:
procedure TForm1.Button1Click(Sender: TObject); begin if SpinEdit1.Text='0' then showmessage('Не указан интервал кликов') else begin Timer3.Interval:=StrToInt(SpinEdit1.Text); Timer3.Enabled:=True; button1.Enabled:=False; button2.Enabled:=True; end; end; procedure TForm1.Button2Click(Sender: TObject); begin Timer3.Enabled:=False; Timer1.Enabled:=True; Timer2.Enabled:=True; button2.Enabled:=False; button1.Enabled:=True; end; procedure TForm1.Button3Click(Sender: TObject); var p: TPoint; begin GetCursorPos(p); Edit3.Text:= IntToStr(p.X); Edit4.Text:= IntToStr(p.Y); end; procedure TForm1.Button4Click(Sender: TObject); var p: TPoint; begin GetCursorPos(p); Edit5.Text:= IntToStr(p.X); Edit6.Text:= IntToStr(p.Y); end; procedure TForm1.Button5Click(Sender: TObject); var p: TPoint; begin GetCursorPos(p); Edit7.Text:= IntToStr(p.X); Edit8.Text:= IntToStr(p.Y); end; procedure TForm1.Button6Click(Sender: TObject); begin close; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE ); end; procedure TForm1.FormShortCut(var Msg: TWMKey; var Handled: Boolean); begin If Msg.CharCode = 81 then // Клавиша Q - устанавливает координаты первой контрольной точки begin Button3.Click; Handled := True; end else If Msg.CharCode = 87 then // Клавиша W - устанавливает координаты второй контрольной точки begin Button4.Click; Handled := True; end else If Msg.CharCode = 69 then // Клавиша E - устанавливает координаты третьей контрольной точки begin Button5.Click; Handled := True; end end; procedure TForm1.Timer1Timer(Sender: TObject); var p: TPoint; begin GetCursorPos(p); Edit1.Text:= IntToStr(p.X); Edit2.Text:= IntToStr(p.Y) end; procedure TForm1.Timer2Timer(Sender: TObject); begin if getasynckeystate($55)<>0 then begin //Если нажат Ctrl, то ... Timer1.Enabled:=False; Timer2.Enabled:=False; end; end; procedure TForm1.Timer3Timer(Sender: TObject); var position: TPoint; begin if getasynckeystate($20)<>0 then begin // Если нажат пробел, то перестать кликать Timer1.Enabled:=True; Timer2.Enabled:=True; Timer3.Enabled:=False; button1.Enabled:=True; button2.Enabled:=False; end else begin SetCursorPos(StrToInt(Edit1.text),StrToInt(Edit2.text)); mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0); mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, 0); end; end; Проект прилагаю - Click.ZIP Спасибо заранее! |