> 백엔드 개발 > C++ > C#을 사용하여 특정 애플리케이션 창의 스크린샷을 찍으려면 어떻게 해야 합니까?

C#을 사용하여 특정 애플리케이션 창의 스크린샷을 찍으려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2025-01-17 12:07:10
원래의
467명이 탐색했습니다.

How Can I Take a Screenshot of a Specific Application Window Using C#?

C#은 지정된 애플리케이션 창의 스크린샷을 찍습니다

전체 화면이 아닌 특정 애플리케이션이나 창의 스크린샷을 찍어야 하는 경우도 있습니다. 이는 창을 장치 컨텍스트에 인쇄할 수 있는 PrintWindow Win32 API를 통해 달성됩니다.

코드 구현

다음 C# 코드는 지정된 창의 스크린샷을 찍는 방법을 보여줍니다.

<code class="language-csharp">// 导入所需的Win32 API
[DllImport("user32.dll")]
public static extern bool GetWindowRect(IntPtr hWnd, out RECT lpRect);
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hWnd, IntPtr hdcBlt, int nFlags);

// 定义表示RECT结构的类
[StructLayout(LayoutKind.Sequential)]
public struct RECT
{
    public int Left;
    public int Top;
    public int Right;
    public int Bottom;
}

// 获取窗口句柄和尺寸
IntPtr hwnd = ...; // 请替换为要截取的窗口句柄
RECT rc;
GetWindowRect(hwnd, out rc);

// 创建位图以存储截图
Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);

// 获取位图的图形设备上下文
Graphics gfxBmp = Graphics.FromImage(bmp);

// 创建离屏设备上下文
IntPtr hdcBitmap = gfxBmp.GetHdc();

// 将窗口打印到离屏设备上下文
PrintWindow(hwnd, hdcBitmap, 0);

// 释放离屏设备上下文
gfxBmp.ReleaseHdc(hdcBitmap);
gfxBmp.Dispose();

// 现在您拥有了表示指定窗口截图的位图</code>
로그인 후 복사

기타 안내

  • PrintWindow 기능은 테두리나 메뉴 ​​등 다른 부분이 아닌 창의 클라이언트 영역을 가로챕니다.
  • 창의 일부가 보이는 경우 보이는 부분만 캡쳐됩니다.
  • 캡처한 스크린샷은 파일로 저장하거나 이미지 뷰어에 표시할 수 있습니다.

위 내용은 C#을 사용하여 특정 애플리케이션 창의 스크린샷을 찍으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿