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

bannerAds