程序运行时,先把本窗口最小化或隐藏,这时屏幕上显示的另外一个进程的窗口。我把鼠标移动到这个窗口的某个点上,点击鼠标左键,这时就获得这个点的坐标值和颜色值,返回并显示原窗口。

解决方案 »

  1.   

    根本不需要用构子。两三行代码搞定。
    GetDC取得你的窗口DC,然后用GetPixel即可。
      

  2.   

    既然是其他进程的窗口,那一定要用钩子了,激活MouseDown,然后获取信息,Active之前的窗口。
    下面是获取本进程的信息
    procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    var
      dc: HDC;
      s: string;
      Color: Cardinal;
    begin
      dc := GetDC(Self.Handle);
      try
        Color := GetPixel(dc, x, y);
        if Color = clr_invalid then Exit;
        s := Format('X at:%d, Y at:%d, Color:%d', [x, y, Color]);
        Application.MessageBox(PChar(s), 'Mouse Down Info', MB_ICONINFORMATION);
      finally
        ReleaseDC(Self.Handle, dc);
      end;
    end;
      

  3.   

    我再研究研究SetWindowsHookEx