Скриншот работающего окна - C#

Узнай цену своей работы

Формулировка задачи:

помогите, надо сделать скриншот работающего окна, делаю так:
var area = Screen.PrimaryScreen.WorkingArea;
var screenshot = new Bitmap(area.Width, area.Height);
var g = Graphics.FromImage(screenshot);
g.CopyFromScreen(area.X, area.Y, 0, 0, area.Size);
везде в поисковиках такой только вариант нашел, но он не так делает, он копирует весь экран за исключением панели задач, а мне нужно только активное окно, как это сделать?

Решение задачи: «Скриншот работающего окна»

textual
Листинг программы
        [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, Top, Right, Bottom;
        }
 
        [DllImport("user32.dll")]
        static extern IntPtr GetForegroundWindow();
 
....
 
            RECT area;
            GetWindowRect(GetForegroundWindow(), out area);
            var screenshot = new Bitmap(area.Right - area.Left, area.Bottom - area.Top);
            using(var g = Graphics.FromImage(screenshot))
                g.CopyFromScreen(area.Left, area.Top, 0, 0, screenshot.Size);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5