特定座標のRGB値取得について
kimarioと申します。
実行中の、あるアプリケーションの任意座標位置のRGB値を取得し、その結果を
メッセージボックスにて表示させたいと考えております。
しかし下記のプログラムを実行すると、どの座標位置でもすべて(-1)で返ってき
てしまいます。
getDCの戻り値が(0)ではないことを確認しているので、デバイスコンテキストの
ハンドルは取得できているものと思われます。
API初心者です。よろしくお願いいたします。
補足)
アプリケーションのウィンドウタイトルが「XXYYZZ」
色を特定したい座標を(60, 60)としています。
############################################################################
public partial class Form1 : Form
{
[DllImport("user32.dll")]
static extern IntPtr GetDC(IntPtr hWnd);
[DllImport( "user32.dll" )]
static extern int ReleaseDC( IntPtr hWnd, IntPtr hDC );
[DllImport( "gdi32.dll" )]
static extern int GetPixel( IntPtr hDC, int x, int y );
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
foreach (Process p in Process.GetProcesses())
{
if (p.MainWindowHandle != IntPtr.Zero)
{
if (p.MainWindowTitle == "XXYYZZ")
{
IntPtr dc = GetDC(p.MainWindowHandle);
MessageBox.Show(GetPixel(dc, 60, 60).ToString());
}
}
}
}
}
お礼
ご回答ありがとうございます。 そうなんです。バックグラウンドで実行したいのです。 無理のようですね。あきらめようかと思います。 ありがとうございました。