C#은 지정된 애플리케이션의 스크린샷을 찍습니다
Graphics.CopyFromScreen()을 사용하면 전체 화면의 스크린샷을 쉽게 찍을 수 있습니다. 그러나 더 복잡한 요구 사항은 특정 애플리케이션의 스크린샷만 찍는 것입니다.
PrintWindow 기능 사용
해결책은 PrintWindow Win32 API를 사용하는 것입니다. 창이 가려지거나 화면에 표시되지 않는 경우에도 창 비트맵을 캡처할 수 있습니다. 다음 코드는 이를 수행하는 방법을 보여줍니다.
<code class="language-csharp">[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); public static Bitmap PrintWindow(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(); return bmp; }</code>
위 코드 조각에서는 RECT 구조를 정의하기 위해 다음 클래스가 필요합니다.
<code class="language-csharp">[StructLayout(LayoutKind.Sequential)] public struct RECT { private int _Left; private int _Top; private int _Right; private int _Bottom; // ... RECT 结构体的其余代码 ... }</code>
이러한 코드 조각을 사용하면 대상 애플리케이션 창의 핸들을 가져와 쉽게 스크린샷을 찍을 수 있습니다. PrintWindow 메서드의 hwnd를 원하는 응용 프로그램 창의 핸들로 바꾸면 됩니다.
위 내용은 C#에서 특정 애플리케이션의 스크린샷을 찍으려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!