Здравствуйте. Пишу прогу, что-то типа кликера , которая должна кликать в заданных координатах, при условии, что в этих координатах нужный нам цвет.
1. Устанавливаем курсор , нажимаем кнопку и сохраняется нужный нам цвет.
2. Устанавливаем курсор , нажимаем кнопку и сохраняется нужные нам координаты.
3. Нажимаем старт, прога переносит курсор и проверяет, совпадает сохраненый нами цвет, с тем что сейчас, если да, то кликает в это место...
Прога сама по себе рабочая, но столкнулся с вопросом. Как мне сделать так, чтобы я мог задавать интервал между повторениями всех этих процедур, и прога все это делала скажем через каждые 30 секунд до тех пор, пока я не отменю ?
Собственно вот исходник
PHP код:
type
TForm1 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Timer2: TTimer;
Label2: TLabel;
Label3: TLabel;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
Button1: TButton;
StaticText4: TStaticText;
Button2: TButton;
StaticText5: TStaticText;
Timer3: TTimer;
Label4: TLabel;
StaticText6: TStaticText;
Label5: TLabel;
Label6: TLabel;
Timer4: TTimer;
Timer5: TTimer;
Button3: TButton;
StaticText7: TStaticText;
Edit1: TEdit;
procedure Timer1Timer(Sender: TObject);
procedure Timer2Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure Timer4Timer(Sender: TObject);
procedure Timer5Timer(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Color2: TColor;
Color: TColor;
pt: TPoint;
pos: TPoint;
dc: hDC;
X, Y: Integer;
implementation
{$R *.dfm}
// Определяем цвет экрана, где наведен курсор
procedure TForm1.Timer1Timer(Sender: TObject);
begin
dc := GetDC (0);
GetCursorPos (pt);
Color := GetPixel(dc, pt.x, pt.y);
// Запись значения в Label1
Label1.Caption:=IntToHEX(color, 6);
ReleaseDC (0, dc);
// При нажатии на F1 цвет больше не меняется
if getasynckeystate($70)<>0 then
Timer1.Enabled:=False;
end;
// Определяем координаты мыши
procedure TForm1.Timer2Timer(Sender: TObject);
begin
GetCursorPos(pos);
// Записываем координаты
Label2.Caption:=IntToStr(pos.X);
Label3.Caption:=IntToStr(pos.Y);
// Если нажать F2 координаты больше не меняются
if getasynckeystate($71)<>0 then
Timer2.Enabled:=False;
end;
// При нажатии на кнопку координаты снова меняются
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer2.Enabled := true;
// удаляем запись о сохранении координат
Label5.Caption:=''
end;
// При нажатии на кнопку цвет снова меняется
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := true;
// удаляем запись о сохранении цвета
Label6.Caption:=''
end;
// Получаем контрольный цвет
procedure TForm1.Timer3Timer(Sender: TObject);
begin
dc := GetDC (0);
GetCursorPos (pt);
Color2 := GetPixel(dc, pt.x, pt.y);
// Выводим полученны цвет в Label4
Label4.Caption:=IntToHEX(color2, 6);
ReleaseDC (0, dc);
end;
// Статус сохранения цвета
procedure TForm1.Timer4Timer(Sender: TObject);
begin
if getasynckeystate($70)<>0 then
Label5.Caption:='Цвет сохранен'
end;
// Статус сохранения координат
procedure TForm1.Timer5Timer(Sender: TObject);
begin
if getasynckeystate($71)<>0 then
Label6.Caption:='Координаты сохранены'
end;
// Кнопка старта
procedure TForm1.Button3Click(Sender: TObject);
begin
X := StrToIntDef(Label2.Caption, 0);
Y := StrToIntDef(Label3.Caption, 0);
SetCursorPos(X, Y);
if color = color2 then begin
mouse_event(MOUSEEVENTF_LEFTDOWN,X,Y,0,0);
sleep(5) ;
mouse_event(MOUSEEVENTF_LEFTUP,X,Y,0,0);
end;
end;
end.