日期:2014-05-17  浏览次数:20797 次

Win API GetPixel 为什么在 WIN2008 32位 SP1 取得的数据全为 空呢? 谢谢

namespace WpfApplication1
{
    /// <summary>
    /// Window1.xaml 的交互逻辑
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            var desk = GetDesktopWindow();
            var dc = GetDC(desk);
            var pix = GetPixel(dc, 100, 200);
            MessageBox.Show(pix.ToString());
        }

        public const string USER32 = "user32.dll";

        [DllImport(USER32, EntryPoint = "GetDesktopWindow")]
        public static extern IntPtr GetDesktopWindow();
        [DllImport(USER32, EntryPoint = "GetDC", SetLastError = true)]
        public static extern IntPtr GetDC(IntPtr hWnd);
        [DllImport("gdi32.dll")]
        public static extern uint GetPixel(IntPtr hWnd, int XPos, int YPos);
    }
}

以上代码,在XP,WIN7上,都可以正确的取得 屏幕X=100 Y=200的颜色
但是在WIN2008上取得的就为:4294967295 也就相当于0xFFFFFFFF 为空的意思

这是怎么回事?

谢谢

------解决方案--------------------
是不是出异常了?
------解决方案--------------------
wpf貌似是会出现这类问题,用winform算了
------解决方案--------------------