他のウィンドウの色を取得するための Delphi のメソッド
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 に設定します。こうすると、画面全体のデバイス コンテキストを取得できます。