
11.04.2011, 01:20
|
Прохожий
|
|
Регистрация: 10.04.2011
Сообщения: 2
Репутация: 10
|
|
Цитата:
Сообщение от lmikle
У тебя куча таймеров, которые используются не по назначению. А вот как раз на нажатие у тебя кнопка, а не таймер.
|
Переписал код, теперь два таймера. Один определяет цвет и координаты + ряд других функций. Другой тоже определяет цвет, но постоянно.
PHP код:
unit Bot_start;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, CoolTrayIcon;
type
TForm1 = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StaticText1: TStaticText;
StaticText2: TStaticText;
StaticText3: TStaticText;
Button1: TButton;
StaticText4: TStaticText;
Button2: TButton;
StaticText5: TStaticText;
Label4: TLabel;
StaticText6: TStaticText;
Label5: TLabel;
Label6: TLabel;
Button3: TButton;
CheckBox1: TCheckBox;
Edit1: TEdit;
StaticText7: TStaticText;
Memo1: TMemo;
Timer6: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Timer6Timer(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);
// Выводим координаты курсора мыши
GetCursorPos(pos);
Label2.Caption:=IntToStr(pos.X);
Label3.Caption:=IntToStr(pos.Y);
// При нажатии на F2 координаты запоминаются и больше не меняются
// При нажатии на F1 цвет запоминается и больше не меняется
if
getasynckeystate($71)<>0
then begin
Timer1.Enabled:=False;
Label6.Caption:='Координаты сохранены' ;
Memo1.Lines.Add ('Координаты сохранены') ;
end;
if
getasynckeystate($70)<>0
then begin
Timer1.Enabled:=False;
Label5.Caption:='Цвет сохранен' ;
Memo1.Lines.Add('Цвет сохранен') ;
end;
end;
// При нажатии на кнопку, координаты снова меняются и удаляется запись
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled := true;
Label5.Caption:='' ;
Memo1.Lines.Add('Координаты удалены');
end;
// При нажатии на кнопку, цвет снова меняется и удаляется запись
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled := true;
Label6.Caption:='' ;
Memo1.Lines.Add('Цвет удален');
end;
// Старт работы проги
procedure TForm1.Button3Click(Sender: TObject);
begin
X := StrToIntDef(Label2.Caption, 0);
Y := StrToIntDef(Label3.Caption, 0);
SetCursorPos(X, Y);
sleep(1000) ;
if
color = color2
then begin
mouse_event(MOUSEEVENTF_LEFTDOWN,X,Y,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,X,Y,0,0);
end;
end;
// Постоянное определение цвета и запсиь в Label4
procedure TForm1.Timer6Timer(Sender: TObject);
begin
dc := GetDC (0);
GetCursorPos (pt);
Color2 := GetPixel(dc, pt.x, pt.y);
Label4.Caption:=IntToHEX(color2, 6);
ReleaseDC (0, dc);
end;
end.
Вопрос остается актуальным, плюс возник вопрос в следующем
PHP код:
if
getasynckeystate($71)<>0
then begin
Timer1.Enabled:=False;
Label6.Caption:='Координаты сохранены' ;
Memo1.Lines.Add ('Координаты сохранены') ;
end;
if
getasynckeystate($70)<>0
then begin
Timer1.Enabled:=False;
Label5.Caption:='Цвет сохранен' ;
Memo1.Lines.Add('Цвет сохранен') ;
end;
end;
Запускаю прогу, нажимаю F1 , прога делает запись что цвет сохранен, нажимаю F2, прога НЕ делает записи про координаты.... перезапускаю прогу, жму F2, прога делает запись про координаты, жму на F1 прога НЕ делает запись про цвет... в чем подвох ? Прошу помочь.
|