阅读量:2
要使用Delphi获取其他窗口的颜色值,可以使用Windows API函数GetPixel。
以下是一个示例代码,它演示如何获取屏幕上指定坐标处的像素颜色值:
unit MainForm; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var hwnd: HWND; dc: HDC; pixelColor: TColorRef; begin // 获取指定窗口的句柄 hwnd := FindWindow(nil, '窗口标题'); if hwnd <> 0 then begin // 获取指定窗口的设备上下文 dc := GetDC(hwnd); if dc <> 0 then begin // 获取指定坐标处的像素颜色值 pixelColor := GetPixel(dc, 100, 100); // 释放设备上下文 ReleaseDC(hwnd, dc); // 显示颜色值 ShowMessage('颜色值为:' + IntToHex(pixelColor, 8)); end else begin ShowMessage('无法获取设备上下文'); end; end else begin ShowMessage('未找到指定窗口'); end; end; end.
在上面的代码中,使用FindWindow函数来获取指定窗口的句柄。然后使用GetDC函数获取窗口的设备上下文。接下来,使用GetPixel函数获取指定坐标处的像素颜色值。最后,使用ShowMessage函数显示颜色值。
请注意,你需要将“窗口标题”替换为你想获取颜色值的窗口的实际标题。另外,要获取屏幕上的其他窗口的颜色值,可以将hwnd参数设置为0,这将获取整个屏幕的设备上下文。