啊小弟我想读取某程序窗口内某点颜色并显示在小弟我的界面上
求救啊,我想读取某程序窗口内某点颜色并显示在我的界面上
我想做一个窗口程序,来实时的反应某程序窗口某点上的颜色,该如何做啊。
------解决方案--------------------
procedure TfrmMain.FormCreate(Sender: TObject);
var
MRect: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @MRect, 0);
Left := MRect.Right - Width;
Top := MRect.Bottom - Height;
end;
procedure TfrmMain.TimerTimer(Sender: TObject);
var
Pos: TPoint;
Handle: HWND;
ScreenDC: HDC;
Buf: array[0..1024] of Char;
ScreenColor: COLORREF;
begin
GetCursorPos(Pos); // 得到当前光标位置
Handle := WindowFromPoint(Pos); // 返回当前位置的句柄
HandleText.Caption := IntToStr(Handle);
GetClassName(Handle, Buf, 1024); // 得到类名
ClassNameText.Caption := Buf;
SendMessage(Handle, WM_GETTEXT, 33, Integer(@Buf)); // 得到标题
TitleText.Caption := Buf;
{ 得到光标处点的颜色 }
ScreenDC := GetDC(0);
ScreenColor := GetPixel(ScreenDC, Pos.X, Pos.Y);
Shape.Brush.Color := TColor(ScreenColor);
edtRGBColor.Text := '红:' + IntToStr(GetRValue(ScreenColor)) +
' 绿:' + IntToStr(GetGValue(ScreenColor)) + ' 蓝:' +
IntToStr(GetBValue(ScreenColor));
ReleaseDC(0, ScreenDC);
edtHtmlColor.Text := Format('#%2.2x%2.2x%2.2x', [GetRValue(ScreenColor), GetGValue(ScreenColor), GetBValue(ScreenColor)]);
edtColor.Text := Format('$%2.2x%2.2x%2.2x', [GetBValue(ScreenColor), GetGValue(ScreenColor), GetRValue(ScreenColor)]);
end;
我想做一个窗口程序,来实时的反应某程序窗口某点上的颜色,该如何做啊。
------解决方案--------------------
procedure TfrmMain.FormCreate(Sender: TObject);
var
MRect: TRect;
begin
SystemParametersInfo(SPI_GETWORKAREA, 0, @MRect, 0);
Left := MRect.Right - Width;
Top := MRect.Bottom - Height;
end;
procedure TfrmMain.TimerTimer(Sender: TObject);
var
Pos: TPoint;
Handle: HWND;
ScreenDC: HDC;
Buf: array[0..1024] of Char;
ScreenColor: COLORREF;
begin
GetCursorPos(Pos); // 得到当前光标位置
Handle := WindowFromPoint(Pos); // 返回当前位置的句柄
HandleText.Caption := IntToStr(Handle);
GetClassName(Handle, Buf, 1024); // 得到类名
ClassNameText.Caption := Buf;
SendMessage(Handle, WM_GETTEXT, 33, Integer(@Buf)); // 得到标题
TitleText.Caption := Buf;
{ 得到光标处点的颜色 }
ScreenDC := GetDC(0);
ScreenColor := GetPixel(ScreenDC, Pos.X, Pos.Y);
Shape.Brush.Color := TColor(ScreenColor);
edtRGBColor.Text := '红:' + IntToStr(GetRValue(ScreenColor)) +
' 绿:' + IntToStr(GetGValue(ScreenColor)) + ' 蓝:' +
IntToStr(GetBValue(ScreenColor));
ReleaseDC(0, ScreenDC);
edtHtmlColor.Text := Format('#%2.2x%2.2x%2.2x', [GetRValue(ScreenColor), GetGValue(ScreenColor), GetBValue(ScreenColor)]);
edtColor.Text := Format('$%2.2x%2.2x%2.2x', [GetBValue(ScreenColor), GetGValue(ScreenColor), GetRValue(ScreenColor)]);
end;