比如运行程序后,鼠标移到另一个程序上的页面某点上,即获取此点的颜色值.
[DllImport("gdi32.dll")]
public static extern int GetPixel(IntPtr hdc,int nXPos,int xYpos);
[DllImport ("gdi32.dll")]
private static extern IntPtr CreateDC ( string lpszDriver, string lpszDevice,string lpszOutput,IntPtr lpInitData );
IntPtr tempint=CreateDC("DISPLAY",null,null,IntPtr.Zero);
textBox1.BackColor=ColorTranslator.FromOle(GetPixel(tempint,Cursor.Position.X,Cursor.Position.Y));
textBox2.Text=Cursor.Position.ToString();
這樣就可以了
我用了<当窗体失去焦点成为不活动窗体时发生><Form1_Deactivate>这个事件,可以取其他场景的色值,但是点击一次其他场景取一次后就不行了,要再点一下原来的窗体才可以再次取点.不知道是不是用这个事件不行,还是要再用一个API函数,将原来的窗体设为焦点.请问一下要用什么函数啊?
private void Form1_Deactivate(object sender, System.EventArgs e)
{
IntPtr tempint=CreateDC("DISPLAY",null,null,IntPtr.Zero);
textBox1.BackColor=ColorTranslator.FromWin32(GetPixel(tempint,Cursor.Position.X,Cursor.Position.Y));
textBox2.Text=Cursor.Position.ToString();
//this.Activate();
}