C#屏幕截图:轻松捕获活动窗口的实用指南

作者:微信公众号:【架构师老卢】
12-18 12:45
566

概述:在C#中捕获活动窗口的屏幕截图可通过`Bitmap`和`Graphics`类实现。代码获取活动窗口句柄,获取窗口位置和大小,创建Bitmap对象,使用Graphics对象绘制屏幕截图,最后保存。此示例展示了简单而有效的屏幕截图技术。

在C#中捕获活动窗口的屏幕截图通常需要使用System.Drawing命名空间中的BitmapGraphics类。以下是详细的步骤和实例源代码:

步骤:

  1. 获取活动窗口的句柄: 使用GetForegroundWindow函数获取当前活动窗口的句柄。

  2. 获取窗口的位置和大小: 使用GetWindowRect函数获取窗口的矩形区域。

  3. 创建Bitmap对象: 使用Bitmap类创建一个与窗口大小相同的位图对象。

  4. 使用Graphics对象绘制屏幕截图: 使用Graphics类的CopyFromScreen方法将窗口的内容复制到位图中。

示例源代码:

using System;
using System.Drawing;
using System.Runtime.InteropServices;

class Program
{
    [DllImport("user32.dll")]
    static extern IntPtr GetForegroundWindow();

    [DllImport("user32.dll")]
    [return: MarshalAs(UnmanagedType.Bool)]
    static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);

    [StructLayout(LayoutKind.Sequential)]
    public struct RECT
    {
        public int Left;
        public int Top;
        public int Right;
        public int Bottom;
    }

    static void Main()
    {
        try
        {
            // 获取活动窗口句柄
            IntPtr hWnd = GetForegroundWindow();

            // 获取窗口位置和大小
            RECT windowRect;
            GetWindowRect(hWnd, out windowRect);

            // 创建Bitmap对象
            using (Bitmap bmp = new Bitmap(windowRect.Right - windowRect.Left, windowRect.Bottom - windowRect.Top))
            {
                // 创建Graphics对象
                using (Graphics g = Graphics.FromImage(bmp))
                {
                    // 将窗口内容绘制到Bitmap中
                    g.CopyFromScreen(new Point(windowRect.Left, windowRect.Top), Point.Empty, bmp.Size);
                }

                // 保存屏幕截图(可根据需要进行保存)
                bmp.Save("screenshot.png");
                
                Console.WriteLine("屏幕截图已保存成功。");
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"发生异常:{ex.Message}");
        }
    }
}

这个示例代码演示了如何通过C#捕获活动窗口的屏幕截图。请注意,此代码需要在具有足够权限的环境中运行,因为它涉及到对其他窗口的访问。

源代码获取:公众号回复消息【code:86925

相关代码下载地址
重要提示!:取消关注公众号后将无法再启用回复功能,不支持解封!
第一步:微信扫码关键公众号“架构师老卢”
第二步:在公众号聊天框发送code:86925,如:code:86925 获取下载地址
第三步:恭喜你,快去下载你想要的资源吧
阅读排行