新手求教,想做一程序,每次按BUTTON1, 就开始判断屏幕坐标123,321的颜色是不是变成了红色, 如果变成红色,就按BUTTON2 , 但如果一分钟过去了,还没变成红色, 就按BUTTON3.。我想应该可以自定义一个事件来判断坐标123,321在一分钟内是不是变成红色,但我真的太新手了,完全不知道怎么入手。希望高手能给一个实例,非常谢谢。

解决方案 »

  1.   

    另外没有必要去按什么button2,button3,你把Button2和button3加到判断之后的代码就行了
      

  2.   


    var
      Dc: HDC;
      I: Integer;
    begin
      Dc := GetDC(0);
      if Windows.GetPixel(Dc, 123, 321) <> clred then
        Windows.SetPixel(Dc, 123, 321, clRed)
      else
        Button2Click(self);
      

  3.   

    截屏到image后,Image1.Canvas.Pixels[x,y]就是color
      

  4.   

    谢谢楼上的各位朋友,如何抓点取色我知道, 我主要想问的是,如何在一分钟内判断出123,321的颜色是不是红色。一分钟内任何的时间,只要变成红色,就马上按BUTTON2, 如果过了一分钟,还不是红色,就按BUTTON3。这应该是要自定义一个事件来完成。
      

  5.   

    加个TIMER或者加个线程来判断
      

  6.   

    这还用给什么实例,用timer定时一分钟,然后在Ontimer事件中去读点的颜色就是了
      

  7.   

    用timer定时采样,如1MS采1次,采1000次即1S,在这1000次以内判断是否有红色,在做相应处理。
      

  8.   

    procedure TForm1.Timer1Timer(Sender: TObject);
    var
      Dc: HDC;
      I: Integer;
    begin
      //Timer1的Interval设置为1;
      Dc := GetDC(0);
      if Windows.GetPixel(Dc, 123, 321) <> clred then
      begin
        if Timer1.Tag<60000 then
          Inc(Timer1.Tag,1)
        else    //如果大于1分钟就执行Button3事件
        begin
          Timer1.Tag:=0;
          Button3Click(Self);
        end;
      end
      else
      begin
        if Timer1.Tag<>0 then
          Timer1.Tag:=0;
        Button2Click(self);
      end;
    end;
      

  9.   

    Dc := GetDC(0);最好放在初始化代码如Form1.OnCreate事件里
      

  10.   

    1、用Screen.Canvas.Pixels[123, 321]取点的颜色
    2、用Timer组件计时
    3、在OnTimer事件中,与clRed比较
    4、调用Button2Click(Sender)即可模拟按键按下的功能
      

  11.   

    if 红 then
      button2click(nil)
    else
      button3click(nil);