Тема: Циклы
Показать сообщение отдельно
  #5  
Старый 11.04.2011, 01:20
HmTH HmTH вне форума
Прохожий
 
Регистрация: 10.04.2011
Сообщения: 2
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
У тебя куча таймеров, которые используются не по назначению. А вот как раз на нажатие у тебя кнопка, а не таймер.
Переписал код, теперь два таймера. Один определяет цвет и координаты + ряд других функций. Другой тоже определяет цвет, но постоянно.

PHP код:
unit Bot_start;

interface

uses
  Windows
MessagesSysUtilsVariantsClassesGraphicsControlsForms,
  
DialogsStdCtrlsExtCtrlsComCtrlsCoolTrayIcon;

type
  TForm1 
= class(TForm)
    
Timer1TTimer;
    
Label1TLabel;
    
Label2TLabel;
    
Label3TLabel;
    
StaticText1TStaticText;
    
StaticText2TStaticText;
    
StaticText3TStaticText;
    
Button1TButton;
    
StaticText4TStaticText;
    
Button2TButton;
    
StaticText5TStaticText;
    
Label4TLabel;
    
StaticText6TStaticText;
    
Label5TLabel;
    
Label6TLabel;
    
Button3TButton;
    
CheckBox1TCheckBox;
    
Edit1TEdit;
    
StaticText7TStaticText;
    
Memo1TMemo;
    
Timer6TTimer;
    
procedure Timer1Timer(SenderTObject);
    
procedure Button1Click(SenderTObject);
    
procedure Button2Click(SenderTObject);
    
procedure Button3Click(SenderTObject);
    
procedure Timer6Timer(SenderTObject);



  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1TForm1;
  
Color2TColor;
  
ColorTColor;
  
ptTPoint;
  
posTPoint;
  
dchDC;
  
XYInteger;

implementation

{$R *.dfm}
// Определяем цвет экрана, где наведен курсор
procedure TForm1.Timer1Timer(SenderTObject);
begin
dc 
:= GetDC (0);
GetCursorPos (pt);
Color := GetPixel(dcpt.xpt.y);
// Выводим полученный цвет в Label1
Label1.Caption:=IntToHEX(color6);
ReleaseDC (0dc);
// Выводим координаты курсора мыши
  
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(SenderTObject);
begin
 Timer1
.Enabled := true;
 
Label5.Caption:='' ;
 
Memo1.Lines.Add('Координаты удалены');
end;
//    При нажатии на кнопку, цвет снова меняется  и удаляется запись
procedure TForm1.Button2Click(SenderTObject);
begin
 Timer1
.Enabled := true;
 
Label6.Caption:=''   ;
 
Memo1.Lines.Add('Цвет удален');
end;
// Старт работы проги
procedure TForm1.Button3Click(SenderTObject);
begin
  X 
:= StrToIntDef(Label2.Caption0);
  
:= StrToIntDef(Label3.Caption0);

  
SetCursorPos(XY);
  
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(SenderTObject);
begin
dc 
:= GetDC (0);
GetCursorPos (pt);
Color2 := GetPixel(dcpt.xpt.y);
Label4.Caption:=IntToHEX(color26);
ReleaseDC (0dc);
 
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 прога НЕ делает запись про цвет... в чем подвох ? Прошу помочь.
Ответить с цитированием