2

我正在尝试创建一个连续制作大量屏幕截图的程序。我不想一遍又一遍地重新创建屏幕截图,我只想找到屏幕之间的变化。

为此,我在屏幕级别使用了 GetUpdateRect() 方法。不幸的是,它没有给我正确的数据。由于我对 C# 比较陌生,所以我确定我做错了什么:P

此代码应记录所有屏幕更改,但它返回 [0,0,0,0]:

    [DllImport("User32.dll")]
    public static extern IntPtr GetDesktopWindow();
    [DllImport("User32.dll")]
    public static extern bool GetUpdateRect(IntPtr hWnd, out Rectangle lpRect, bool bErase);

    static void Main()
    {
        Rectangle updateRect;
        GetUpdateRect(GetDesktopWindow(), out updateRect, false);
        while (true)
        {
            Thread.Sleep(100);
            Console.WriteLine(updateRect);
        }
    }

非常感谢所有帮助!:D

4

1 回答 1

1

尝试使用Pinvoke.Net上列出的代码来导入RECT类型,而不是使用System.Drawing.Rectangle(正如@Alvin Wong 建议的那样)并更改GetUpdateRect()方法的签名以匹配。

高温高压

于 2013-01-30T13:48:51.143 回答