デスクトップで座標色取得

解決


のーとん  2003-07-24 23:14:59  No: 4232  IP: [192.*.*.*]

はじめまして。

よくある「デスクトップで座標位置の色を取得するソフト」
と同じような動きをさせたいのですが
なにぶん初心者なものでさっぱりわかりません。
流れとしては、デスクトップにランダムに色が変わるフォームがあるとして

10分に一度特定の座標位置の色を取得
色が変わっていればイベント発生

という感じです。
良ければ教えていただけないでしょうか?
よろしくお願いします。

編集    削除
にしの  2003-07-24 23:54:14  No: 4233  IP: [192.*.*.*]

デスクトップのデバイスコンテキストは、GetDC(0)で取得できます。
このデバイスコンテキストから、BitBltでTBitmap.Canvas.Handleにコピーしてやれば、通常のCanvasから色を読み取るのと同じ方法で取得できます。

googleで探せばたくさん情報はありますよ。

編集    削除
Halbow  2003-07-24 23:56:02  No: 4234  IP: [192.*.*.*]

Halbow です。

スクリーン座標 X,Y のピクセルの色は、ディスプレイDCから GetPixel で
取得できます。こんな感じです。

procedure TForm1.Button1Click(Sender: TObject);
var
  DispDC: HDC;
  X,Y:integer;
  Clr:COLORREF;
begin
  X := 100;
  Y := 100;
  DispDC := CreateDC('DISPLAY',nil,nil,nil);
    Clr := GetPixel(DispDC,X,Y);
  DeleteDC(DispDC);

  Panel1.Color := TColor(Clr);
end;

わたしのHPではディスプレイDCからのスクリーンキャプチャのプログラム
を説明しています。(動画のキャプチャはできません)

http://halbow.cool.ne.jp/Notes/N009.html

編集    削除
のーとん  2003-07-25 18:41:28  No: 4235  IP: [192.*.*.*]

うまくいきました!
にしのさん、Halbowさん、ありがとうございました。

編集    削除